title: Why does this Rust import need `self`?
body: <p>I have the following set of imports at the top of my program:</p>
  
  <pre><code>extern crate serde_bencode;
  extern crate serde;
  extern crate serde_bytes;
  extern crate url;
  extern crate url_serde;
  
  use serde_bytes::ByteBuf;
  use serde_bencode::de;
  use serde_bencode::error::Result;
  use serde_bencode::Error::{Custom, InvalidLength};
  use self::url::{Url};
  </code></pre>
  
  <p>This program currently <em>does</em> compile. However, I don't understand why I need to write <code>self</code> on the <code>use self::url::{Url};</code> line. None of the other <code>use</code> statements need <code>self</code> - why does <code>url</code>?</p>
  
  <p>For context, the snippet above is from a file called <code>file_reader.rs</code>, in a directory with the following structure:</p>
  
  <pre><code>roar/
      file_reader.rs
      main.rs
      lib.rs
  </code></pre>
  
  <p>Edit: I just noticed that if I add the line <code>extern crate url;</code> to <code>lib.rs</code>, then I don't need the <code>self</code>; however, I don't know <em>why</em> this step is necessary.</p>