Error handling 对于没有返回值的语句,忽略错误的正确方法是什么?
如果您有一行代码可以在不影响程序的情况下失败,那么什么是忽略它的正确方法 我可以简单地排除Error handling 对于没有返回值的语句,忽略错误的正确方法是什么?,error-handling,rust,Error Handling,Rust,如果您有一行代码可以在不影响程序的情况下失败,那么什么是忽略它的正确方法 我可以简单地排除 我可以在实现的地方使用unwrap\u或\u default() 我显然可以使用匹配,或者if let语句,但是没有代码可以作为后续运行,所以这些语句感觉是错误的 是否有适当的或惯用的方法来处理这些情况?如果您不关心结果,请将其分配给\u: fn foo() -> Result<i32, String> { Err(String::from("This is an error")
我可以在实现的地方使用unwrap\u或\u default()
我显然可以使用匹配
,或者if let
语句,但是没有代码可以作为后续运行,所以这些语句感觉是错误的
是否有适当的或惯用的方法来处理这些情况?如果您不关心结果,请将其分配给\u
:
fn foo() -> Result<i32, String> {
Err(String::from("This is an error"))
}
fn main() {
let _ = foo();
}
或者,您可以对结果使用和_then()
或.map()
:
fn main() {
let _ = foo().map(|x| dbg!(x));
}
缺点是它使用了闭包,因此您无法从其中的外部函数返回。如果您不关心结果的Ok
或Err
变量,那么您只是忽略了函数的返回值。在不引起编译器警告的情况下这样做的惯用方法是:let
fn main() {
let _ = foo().map(|x| dbg!(x));
}