<p dir="auto">There's a playground snippet showing the issue here: <a href="http://is.gd/tYeNHE" rel="nofollow">http://is.gd/tYeNHE</a></p>
<p dir="auto">Here's the gist:</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="use std::collections;
static VERSION: &amp;'static str = &quot;rustc 0.13.0-dev (77cd5cc54 2014-12-07 19:02:18 +0000)&quot;;
fn main() {
    let r = {
        // this works fine
        let d = collections::HashMap::new();
        d.insert(&quot;foo&quot;, &quot;bar&quot;);

        // this doesn't
        type Header = collections::HashMap&lt;String, Vec&lt;String&gt;&gt;; 
        let x = Header::new();
    };
    println!(&quot;{}&quot;, r)
}"><pre class="notranslate"><span class="pl-k">use</span> std<span class="pl-kos">::</span>collections<span class="pl-kos">;</span>
<span class="pl-k">static</span> <span class="pl-v">VERSION</span><span class="pl-kos">:</span> <span class="pl-c1">&amp;</span><span class="pl-c1">'</span><span class="pl-ent">static</span> <span class="pl-smi">str</span> = <span class="pl-s">"rustc 0.13.0-dev (77cd5cc54 2014-12-07 19:02:18 +0000)"</span><span class="pl-kos">;</span>
<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">let</span> r = <span class="pl-kos">{</span>
        <span class="pl-c">// this works fine</span>
        <span class="pl-k">let</span> d = collections<span class="pl-kos">::</span><span class="pl-smi">HashMap</span><span class="pl-kos">::</span><span class="pl-en">new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
        d<span class="pl-kos">.</span><span class="pl-en">insert</span><span class="pl-kos">(</span><span class="pl-s">"foo"</span><span class="pl-kos">,</span> <span class="pl-s">"bar"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

        <span class="pl-c">// this doesn't</span>
        <span class="pl-k">type</span> <span class="pl-smi">Header</span> = collections<span class="pl-kos">::</span><span class="pl-smi">HashMap</span><span class="pl-kos">&lt;</span><span class="pl-smi">String</span><span class="pl-kos">,</span> <span class="pl-smi">Vec</span><span class="pl-kos">&lt;</span><span class="pl-smi">String</span><span class="pl-kos">&gt;</span><span class="pl-kos">&gt;</span><span class="pl-kos">;</span> 
        <span class="pl-k">let</span> x = <span class="pl-smi">Header</span><span class="pl-kos">::</span><span class="pl-en">new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span><span class="pl-kos">;</span>
    <span class="pl-en">println</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-s">"{}"</span>, r<span class="pl-kos">)</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Compile this:</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="pub mod foo {
    pub mod bar {
        pub mod baz {
            struct Qux;

            impl Qux {
                pub fn new() {}
            }
        }
    }
}

fn main() {
    type Ham = foo::bar::baz::Qux;
    let Foo = foo::bar::baz::Qux::new();  // works fine
    let Bar = Ham::new();  // oops!
}"><pre class="notranslate"><span class="pl-k">pub</span> <span class="pl-k">mod</span> foo <span class="pl-kos">{</span>
    <span class="pl-k">pub</span> <span class="pl-k">mod</span> bar <span class="pl-kos">{</span>
        <span class="pl-k">pub</span> <span class="pl-k">mod</span> baz <span class="pl-kos">{</span>
            <span class="pl-k">struct</span> <span class="pl-smi">Qux</span><span class="pl-kos">;</span>

            <span class="pl-k">impl</span> <span class="pl-smi">Qux</span> <span class="pl-kos">{</span>
                <span class="pl-k">pub</span> <span class="pl-k">fn</span> <span class="pl-en">new</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>
            <span class="pl-kos">}</span>
        <span class="pl-kos">}</span>
    <span class="pl-kos">}</span>
<span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">type</span> <span class="pl-smi">Ham</span> = foo<span class="pl-kos">::</span>bar<span class="pl-kos">::</span>baz<span class="pl-kos">::</span><span class="pl-smi">Qux</span><span class="pl-kos">;</span>
    <span class="pl-k">let</span> <span class="pl-v">Foo</span> = foo<span class="pl-kos">::</span>bar<span class="pl-kos">::</span>baz<span class="pl-kos">::</span><span class="pl-smi">Qux</span><span class="pl-kos">::</span><span class="pl-en">new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>  <span class="pl-c">// works fine</span>
    <span class="pl-k">let</span> <span class="pl-v">Bar</span> = <span class="pl-smi">Ham</span><span class="pl-kos">::</span><span class="pl-en">new</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>  <span class="pl-c">// oops!</span>
<span class="pl-kos">}</span></pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ rustc ty.rs
!!! (resolving module in lexical scope) module wasn't actually a module!
ty.rs:16:14: 16:22 error: unresolved name
ty.rs:16     let Bar = Ham::new();
                       ^~~~~~~~
ty.rs:16:14: 16:22 error: use of undeclared module `Ham`
ty.rs:16     let Bar = Ham::new();
                       ^~~~~~~~
!!! (resolving module in lexical scope) module wasn't actually a module!
ty.rs:16:14: 16:22 error: unresolved name `Ham::new`.
ty.rs:16     let Bar = Ham::new();
                       ^~~~~~~~
error: aborting due to 3 previous errors
task 'rustc' failed at 'explicit failure', /root/catacombs/scrap/rust/src/libsyntax/diagnostic.rs:102
task '&lt;main&gt;' failed at 'explicit failure', /root/catacombs/scrap/rust/src/librustc/lib.rs:392"><pre class="notranslate"><code class="notranslate">$ rustc ty.rs
!!! (resolving module in lexical scope) module wasn't actually a module!
ty.rs:16:14: 16:22 error: unresolved name
ty.rs:16     let Bar = Ham::new();
                       ^~~~~~~~
ty.rs:16:14: 16:22 error: use of undeclared module `Ham`
ty.rs:16     let Bar = Ham::new();
                       ^~~~~~~~
!!! (resolving module in lexical scope) module wasn't actually a module!
ty.rs:16:14: 16:22 error: unresolved name `Ham::new`.
ty.rs:16     let Bar = Ham::new();
                       ^~~~~~~~
error: aborting due to 3 previous errors
task 'rustc' failed at 'explicit failure', /root/catacombs/scrap/rust/src/libsyntax/diagnostic.rs:102
task '&lt;main&gt;' failed at 'explicit failure', /root/catacombs/scrap/rust/src/librustc/lib.rs:392
</code></pre></div>
<p dir="auto">I can't imagine that this is intentional, as it greatly limits the utility of type aliases.</p>