我正在铁 rust 的一个大项目上工作,有很多移动的碎片.我的议程之一是在任何部分出现错误时记录错误,以便稍后进行调试. 然而,似乎每个函数调用的简洁性都消失了,这似乎是因为我的天真.
我怎样才能让它更简洁呢?我看了看这个question,它本质上要求使用match
来同时捕获OK()
和Err
.
fn pathway_1(x: &str, y: &str) -> Option<Vec<String>> {
let unique_numbers = match query_unique_numbers(&x, &y) {
Ok(r) => r
Err(e) => {
log::error!(target: "normal", "Could not query unique numbers. Err {e}");
return None;
}
}
let unique_people = match query_unique_people(&unique_numbers, &y) {
Ok(r) => r
Err(e) => {
log::error!(target: "normal", "Could not query unique people. Err {e}");
return None;
}
}
let relevant_things_by_people = match query_relevant_things(&unique_people, &y) {
Ok(r) => r
Err(e) => {
log::error!(target: "normal", "Could not query relevant things. Err {e}");
return None;
}
}
/// Many such function calls below.
Some(vector_of_strings)
}