我读到在Result
上使用unwrap
并不是一个很好的防 rust 方法,最好使用模式匹配,这样发生的任何错误都可以得到适当的处理.
我明白了,但是考虑一下这个片段,读取一个目录并打印每个条目的访问时间:
use std::fs;
use std::path::Path;
fn main() {
let path = Path::new(".");
match fs::read_dir(&path) {
Ok(entries) => {
for entry in entries {
match entry {
Ok(ent) => {
match ent.metadata() {
Ok(meta) => {
match meta.accessed() {
Ok(time) => {
println!("{:?}", time);
},
Err(_) => panic!("will be handled")
}
},
Err(_) => panic!("will be handled")
}
},
Err(_) => panic!("will be handled")
}
}
},
Err(_) => panic!("will be handled")
}
}
我想处理上面代码中所有可能的错误(panic
宏只是一个占位符).虽然上面的代码有效,但我认为它很难看.处理这种情况的惯用方法是什么?