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));
}