【问题标题】:Lifetime error when spawning a task生成任务时的生命周期错误
【发布时间】:2014-12-23 11:03:00
【问题描述】:

我无法理解这个关于生命周期的错误。 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

代码有什么问题?

【问题讨论】:

    标签: rust lifetime


    【解决方案1】:

    您正在尝试调用self.handle(stream),这需要将self 移动到新生成的线程中。这是做不到的。

    【讨论】:

      猜你喜欢
      • 2014-09-10
      • 2017-05-03
      • 2013-11-26
      • 2017-12-27
      • 2023-02-11
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2016-02-13
      相关资源
      最近更新 更多