如果您有一行代码可能会失败而不会对程序产生重大影响,那么忽略它的正确方法是什么?
我可以简单地排除.expect("")
但是,我相信如果它失败会导致崩溃,对吗?
我可以unwrap_or_default()
在实现的地方使用。
我明明可以用a match
, orif let
语句,但是没有代码可以作为后续运行,所以这些感觉不对。
是否有适当或惯用的方法来处理这些情况?
如果您不关心结果,请将其分配给_
:
fn foo() -> Result<i32, String> {
Err(String::from("This is an error"))
}
fn main() {
let _ = foo();
}
如果您确实关心结果,则可以使用if let
:
fn main() {
if let Ok(x) = foo() {
dbg!(x);
}
}
或者,您可以在结果上使用.and_then()
或.map()
:
fn main() {
let _ = foo().map(|x| dbg!(x));
}
缺点是它使用了一个闭包,所以你不能从那里的外部函数返回。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句