3 个版本
0.1.2 | 2020年4月15日 |
---|---|
0.1.1 | 2020年4月9日 |
0.1.0 | 2020年4月9日 |
#2306 in Rust 模式
用于 nexusfetch
7KB
55 行
handle-error
一个用于错误处理/冒泡的宏,以减少 Rust 错误处理样板代码,其中 ?
无法使用,因为错误的位置很重要。
对于给定的可能失败的表达式(返回结果的表达式),例如
fn do_something() -> Result<(), E> {
// ....
}
可以使用以下方式
#[macro_use]
extern crate log;
#[macro_use]
extern crate handle_error;
fn main() -> Result<(), E> {
let v = handle_error!(do_something(), "Failed to do something");
Ok(())
}
替换常见的模式
#[macro_use]
extern crate log;
// Match case where we care about the ok value
fn example_one() -> Result<(), E> {
let v = match do_something() {
Ok(v) => v,
Err(e) => {
error!("Failed to do something");
return Err(e);
}
};
Ok(())
}
// If let where we do not care about the ok value
fn example_two() -> Result<(), E> {
if let Err(e) = do_something() {
error!("Failed to do something");
return Err(e);
}
Ok(())
}