2014-12-23 1 views
0

Я не могу понять эту ошибку относительно сроков жизни. Proxy является структурой:Пожизненная ошибка при нерестах задачи

impl Proxy { 
    pub fn new<A: ip::ToSocketAddr>(address: A) -> Proxy { 
     Proxy { 
      address: address.to_socket_addr().unwrap() 
     } 
    } 

    pub fn listen_and_proxy(&self) { 
     println!("listening {}", self.address); 
     for stream in TcpListener::bind(self.address).listen().incoming() { 
      let stream = stream.unwrap(); 
      spawn(move || { // <- this causes an error 
       let mut stream = stream; 
       let name = stream.peer_name(); 
       println!("client: {} -> {}", name, self.handle(stream)); 
      }); 
     } 
    } 
} 

Ошибка Выход:

cannot infer an appropriate lifetime due to conflicting requirements 

Что плохого в коде?

ответ

3

Вы пытаетесь позвонить по телефону self.handle(stream), который потребует перемещения self во вновь созданный поток. Это невозможно.