我读到在Rust中使用
我明白这个观点,但考虑一下这个代码片段,它读取一个目录并打印每个条目的访问时间:
我想在上面的代码中处理所有可能的错误(
unwrap
来处理Result
不是一个好的做法,最好使用模式匹配来适当处理发生的任何错误。我明白这个观点,但考虑一下这个代码片段,它读取一个目录并打印每个条目的访问时间:
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
宏只是一个占位符)。虽然上面的代码可以工作,但我认为它很丑陋。在这种情况下,处理的惯用方式是什么?
and_then(|_| { foo; Ok(()) });
可以简写为map(|_| { foo; });
。 - mcarton