我知道在Rust中处理错误的惯用方法是使用match语句,但我正在寻找其他实现相同功能的方法。
这个可以运行,但是我需要在else语句中打印来自
use std::fs;
fn main() {
if let Ok(f) = fs::read_dir("/dummy"){
println!("First: {:?}", f);
}else{
println!("Error");
}
}
这个可以运行,但是我需要在else语句中打印来自
fs::read_dir("/dummy")
的原始Result
错误。我该怎么做?
match
更加复杂和冗长。例如,更多的if let
语句,就像这样let f = fs::read_dir(..); if let Ok(good) = f {}; if let Err(e) = f {}
,或者函数式风格,像这样fs::read_dir(...).and_then(|f| println!(...) ).or_else(|e| println!(...))
。 - Michael Andersonif let
结构的整个意图就是在你不需要其他分支的细节时比match
更简单。如果你需要这些细节,你就必须使用match
。 - Jmb