lak*_*tak 4 error-handling macros panic rust
是否存在将错误转换为恐慌的try
宏,类似于宏?我需要定义自己的吗?
例如,如果单元测试无法打开文件,我会感到恐慌.我目前的解决方法是:
macro_rules! tryfail {
($expr:expr) => (match $expr {
result::Result::Ok(val) => val,
result::Result::Err(_) => panic!(stringify!($expr))
})
}
#[test]
fn foo() {
let c = tryfail!(File::open(...));
}
Run Code Online (Sandbox Code Playgroud)
这正是方法Result::unwrap
和Result::expect
做法.
我知道你要求一个宏,但我认为你的用例可以通过以下unwrap
方法实现:
#[test]
fn foo() {
let c = File::open(...).unwrap();
// vs
let c = tryfail!(File::open(...));
}
Run Code Online (Sandbox Code Playgroud)
请注意,在代码不是测试,它更习惯使用expect
.
如果你真的想要一个宏,你可以用一个写一个unwrap
.
归档时间: |
|
查看次数: |
97 次 |
最近记录: |