Rust 在match语句中重用匹配的变量

Rust 在match语句中重用匹配的变量,rust,pattern-matching,match,borrow-checker,ownership,Rust,Pattern Matching,Match,Borrow Checker,Ownership,我正在寻找一种处理这种情况的好模式。在检查给定变量的类型是否正确/是否包含我期望的类型后,我希望继续执行进一步的操作。问题是我想重用匹配的变量 fn proceed(stream: std::net::TcpStream) { // ... } fn main() { let mut stream = TcpStream::connect("127.0.0.1:7878"); match stream { TcpStream =>

我正在寻找一种处理这种情况的好模式。在检查给定变量的类型是否正确/是否包含我期望的类型后,我希望继续执行进一步的操作。问题是我想重用匹配的变量

fn proceed(stream: std::net::TcpStream) {
    // ...
}

fn main() {
    let mut stream = TcpStream::connect("127.0.0.1:7878");

    match stream {
       TcpStream => proceed(stream.unwrap()),
       Error => println!("buuuu")
   }
}

它给出了移动后使用的
变量
错误。通过使用move创建闭包进行盲修复会导致更多级联错误。在这种情况下使用
match
语句有什么好处吗?

您可以在
结果的
变量上进行模式匹配:

使用std::net::TcpStream;
fn继续(流:TCP流){
待办事项!()
}
fn示例(){
让mut stream=TcpStream::connect(“127.0.0.1:7878”);
匹配流{
正常(tcp)=>继续(tcp),
Err(Err)=>println!(“buuu”),
}
}

谢谢您的帮助,查看返回类型是误导性的时间:)@ MIKE79495如果我的答案解决了你的问题,请考虑投票并接受它(通过点击灰色评分标记下面的答案得分),谢谢!