title: Lifetime error when spawning a task
body: <p>I can not understand this error regarding lifetimes. <code>Proxy</code> is a struct:</p>
  
  <pre><code>impl Proxy {
      pub fn new&lt;A: ip::ToSocketAddr&gt;(address: A) -&gt; Proxy {
          Proxy {
              address: address.to_socket_addr().unwrap()
          }
      }
  
      pub fn listen_and_proxy(&amp;self) {
          println!("listening {}", self.address);
          for stream in TcpListener::bind(self.address).listen().incoming() {
              let stream = stream.unwrap();
              spawn(move || { // &lt;- this causes an error
                  let mut stream = stream;
                  let name = stream.peer_name();
                  println!("client: {} -&gt; {}", name, self.handle(stream));
              });
          }
      }
  }
  </code></pre>
  
  <p>Output error:</p>
  
  <pre><code>cannot infer an appropriate lifetime due to conflicting requirements
  </code></pre>
  
  <p>What is wrong in the code?</p>