Rust 将锈流从TcpListener分配到回路中的分离方法
我是生锈新手,代码如下:Rust 将锈流从TcpListener分配到回路中的分离方法,rust,traits,tcplistener,Rust,Traits,Tcplistener,我是生锈新手,代码如下: while-let-Some(tcp_-stream)=incoming.next(){ 匹配tcp_流{ 好的=>{ 处理请求(tcp\u stream.unwrap(),&路由); } 如果e.kind()==io::ErrorKind::WouldBlock=>{ 继续; } Err(e)=>恐慌!(“错误”), }; } 我得到以下错误: 移动值的使用:`tcp\u流` 部分移动后此处使用的值 注意:发生移动是因为值的类型为'std::net::TcpStre
while-let-Some(tcp_-stream)=incoming.next(){
匹配tcp_流{
好的=>{
处理请求(tcp\u stream.unwrap(),&路由);
}
如果e.kind()==io::ErrorKind::WouldBlock=>{
继续;
}
Err(e)=>恐慌!(“错误”),
};
}
我得到以下错误:
移动值的使用:`tcp\u流`
部分移动后此处使用的值
注意:发生移动是因为值的类型为'std::net::TcpStream',而该类型不实现'Copy'特性C(E0382)
lib.rs(72,20):移到此处的值
库rs(73,36):部分移动后此处使用的值
我想做的是用一个单独的方法处理新的连接/tcp流handle\u request
,但我不确定如何去做。传递引用也会产生同样的问题。我尝试为TcpStream
实现Copy
特性,但由于我不在它的框架内,我似乎无法做到这一点
任何指点都将不胜感激 一个解决方案是在一个arm中执行错误检查: 异步fn侦听(self,侦听器:TcpListener){ 让routes=self.routes; 让mut incoming=listener.incoming(); while let Some(tcp_stream)=incoming.next(){ 匹配tcp_流{ 好的=>{ 处理请求(tcp\u stream.unwrap(),&路由); } 错误(e)=>{ 如果e.kind()==io::ErrorKind::WouldBlock{ 继续; } 恐慌!(“错误”); }, }; } }
Heya,你读过这本书了吗?我不确定你需要在回答中解释多少。。。简单地说,
match
语句使用您匹配的值,并且您希望使用从结果中提取的s:TcpStream
。尝试使用tcp\u流。尝试克隆()?哦,当然有意义,谢谢@Plecra!我也要读一下这一章。