1个不稳定版本
0.5.0 | 2020年11月18日 |
---|
#39 在 #anonymous
10KB
146 行
一个库,允许在返回结果的错误中使用匿名求和类型。此库附加到的函数必须以如下形式返回类型:Result<T, E1 + E2 + ...>
.
示例
use std::io;
use some_error::*;
#[derive(Debug, Clone, Copy)]
struct NotZeroError(u32);
#[some_error]
fn my_func() -> Result<(), io::Error + NotZeroError>{
let x = 3;
if x != 0 {
Err(NotZeroError(x))?;
}
Ok(())
}
fn main() {
match my_func() {
Ok(_) => {
println!("Worked ok!");
}
Err(my_func::NotZeroError(NotZeroError(x))) => {
println!("{} is not zero!!", x);
}
Err(my_func::io::Error(io_err)) => {
println!("io error: {:?}", io_err);
}
}
}
依赖项
~1.5MB
~34K SLoC