<p dir="auto">Are static functions meant to be in trait scope, or module scope? Here's an example:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="trait Vector2&lt;T:Num Ord FuzzyEq&gt; {
    pure fn x() -&gt; T;
    pure fn y() -&gt; T;

    static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float) -&gt; self;
}

trait Vector3&lt;T:Num Ord FuzzyEq&gt; {
    pure fn x() -&gt; T;
    pure fn y() -&gt; T;
    pure fn z() -&gt; T;

    static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float) -&gt; self;

    fn cross(&amp;&amp;other:self) -&gt; self;
}

trait Vector4&lt;T:Num Ord FuzzyEq&gt; {
    pure fn x() -&gt; T;
    pure fn y() -&gt; T;
    pure fn z() -&gt; T;
    pure fn w() -&gt; T;

    static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float, &amp;&amp;w:float) -&gt; self;
}"><pre class="notranslate"><code class="notranslate">trait Vector2&lt;T:Num Ord FuzzyEq&gt; {
    pure fn x() -&gt; T;
    pure fn y() -&gt; T;

    static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float) -&gt; self;
}

trait Vector3&lt;T:Num Ord FuzzyEq&gt; {
    pure fn x() -&gt; T;
    pure fn y() -&gt; T;
    pure fn z() -&gt; T;

    static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float) -&gt; self;

    fn cross(&amp;&amp;other:self) -&gt; self;
}

trait Vector4&lt;T:Num Ord FuzzyEq&gt; {
    pure fn x() -&gt; T;
    pure fn y() -&gt; T;
    pure fn z() -&gt; T;
    pure fn w() -&gt; T;

    static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float, &amp;&amp;w:float) -&gt; self;
}
</code></pre></div>
<p dir="auto">This is the error I get when I try to compile:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="rustc src/om3d.rc --lib --out-dir=lib
src/vec.rs:61:4: 61:64 error: Duplicate definition of value make
src/vec.rs:61     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/vec.rs:53:4: 53:53 note: First definition of value make here:
src/vec.rs:53     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/vec.rs:72:4: 72:75 error: Duplicate definition of value make
src/vec.rs:72     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float, &amp;&amp;w:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/vec.rs:61:4: 61:64 note: First definition of value make here:
src/vec.rs:61     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to 2 previous errors"><pre class="notranslate"><code class="notranslate">rustc src/om3d.rc --lib --out-dir=lib
src/vec.rs:61:4: 61:64 error: Duplicate definition of value make
src/vec.rs:61     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/vec.rs:53:4: 53:53 note: First definition of value make here:
src/vec.rs:53     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/vec.rs:72:4: 72:75 error: Duplicate definition of value make
src/vec.rs:72     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float, &amp;&amp;w:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/vec.rs:61:4: 61:64 note: First definition of value make here:
src/vec.rs:61     static pure fn make(&amp;&amp;x:float, &amp;&amp;y:float, &amp;&amp;z:float) -&gt; self;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to 2 previous errors
</code></pre></div>
<p dir="auto">When trying to do <code class="notranslate">rustc</code> development on the stage1 compiler, I've been hitting a link error.</p>
<p dir="auto">I suspect something has gone wrong in our make dependencies because I think the problem goes away if you first do a full build before doing <code class="notranslate">check-stage1-cfail</code> (I <em>think</em>, though I have not double-checked that scenario from scratch in a clean build dir yet).</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="% uname -a
Darwin fklockii-Eris.local 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64
% git log -1 --oneline
1b46b00 auto merge of #17784 : bkoropoff/rust/issue-17780, r=pcwalton
% ../configure --enable-debug --disable-optimize   --enable-ccache --enable-clang --prefix=~/opt/rust-dbg-nopt  &amp;&amp; make clean &amp;&amp; make check-stage1-cfail
[... expurgated ...]
/Users/pnkfelix/Dev/Mozilla/rust.git/src/compiletest/compiletest.rs:1:1: 1:1 error: can't find crate for `rt`
/Users/pnkfelix/Dev/Mozilla/rust.git/src/compiletest/compiletest.rs:1 // Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
                                                                      ^
error: aborting due to previous error
make: *** [x86_64-apple-darwin/stage0/lib/rustlib/x86_64-apple-darwin/bin/compiletest] Error 101"><pre class="notranslate"><code class="notranslate">% uname -a
Darwin fklockii-Eris.local 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64
% git log -1 --oneline
1b46b00 auto merge of #17784 : bkoropoff/rust/issue-17780, r=pcwalton
% ../configure --enable-debug --disable-optimize   --enable-ccache --enable-clang --prefix=~/opt/rust-dbg-nopt  &amp;&amp; make clean &amp;&amp; make check-stage1-cfail
[... expurgated ...]
/Users/pnkfelix/Dev/Mozilla/rust.git/src/compiletest/compiletest.rs:1:1: 1:1 error: can't find crate for `rt`
/Users/pnkfelix/Dev/Mozilla/rust.git/src/compiletest/compiletest.rs:1 // Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
                                                                      ^
error: aborting due to previous error
make: *** [x86_64-apple-darwin/stage0/lib/rustlib/x86_64-apple-darwin/bin/compiletest] Error 101
</code></pre></div>