2个不稳定版本
使用旧的Rust 2015
| 0.2.0 | 2016年8月26日 |
|---|---|
| 0.1.0 | 2016年8月24日 |
#5 in #unwrapping
4KB
51 行
try_or 
包含宏 try_or!、try_or_else!、try_opt_or! 和 try_opt_or_else!。这些是用于解包 Result 或 Option 的辅助宏,当返回早期为 Err 和 None 值时。其语义类似于 unwrap_or 和 unwrap_or_else。
如果您想要一个 try_opt! 宏,已经有另一个crate(try_opt)提供。
文档
用法
添加到您的Cargo.toml中
[dependencies]
try_or = "0.1"
使用宏如下所示
#[macro_use]
extern crate try_or;
fn main() {
// test try_or!
assert_eq!({ || try_or!("5".parse::<u32>(), 1) } (), 5);
assert_eq!({ || try_or!("a".parse::<u32>(), 1) } (), 1);
// test try_or_else!
assert_eq!({ || try_or_else!("1".parse::<u32>(), |_| 5) } (), 1);
assert_eq!({ || try_or_else!("a".parse::<u32>(), |_| 5) } (), 5);
// test try_opt_or!
assert_eq!({ || try_opt_or!(Some(1), 2) } (), 1);
assert_eq!({ || try_opt_or!(None, 2) } (), 2);
// test try_or_else!
assert_eq!({ || try_opt_or_else!(Some(1), || 2) } (), 1);
assert_eq!({ || try_opt_or_else!(None, || 2) } (), 2);
}