在 match 语句中重用匹配的变量
Reusing matched variable inside of match statement
我正在寻找处理此类情况的良好模式。我想在检查给定变量是否正确 type/contains 我所期望的之后继续进一步的操作。问题是我想重用匹配的变量。
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
语句有什么好处吗?
您可以对 Result
的 Ok
变体进行模式匹配:
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"),
}
}
我正在寻找处理此类情况的良好模式。我想在检查给定变量是否正确 type/contains 我所期望的之后继续进一步的操作。问题是我想重用匹配的变量。
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
语句有什么好处吗?
您可以对 Result
的 Ok
变体进行模式匹配:
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"),
}
}