问题描述
我正在寻找一种处理这种情况的好方法。在检查给定变量是否正确类型/包含我期望的内容后,我想继续进行进一步的操作。问题是我想重用匹配的变量。
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")
}
}
它给了我 variable used after move
错误。通过移动创建闭包进行盲目修复会导致更多的级联错误。在这种情况下使用 match
语句有什么好处吗?
解决方法
您可以对 Ok
的 Result
变体进行模式匹配:
use std::net::TcpStream;
fn proceed(stream: TcpStream) {
todo!()
}
fn example() {
let mut stream = TcpStream::connect("127.0.0.1:7878");
match stream {
Ok(tcp) => proceed(tcp),Err(err) => println!("buuuu"),}
}