3个版本 (破坏性更新)
0.3.0 | 2019年2月23日 |
---|---|
0.2.0 | 2019年2月23日 |
0.1.0 | 2019年2月23日 |
#1557 in Rust模式
每月1,662次下载
10KB
60 行
multi_try
此crate允许您组合多个Result
类型,并返回包含所有结果的元组或任何错误发生时的Vec
。当您想要为所有错误提供错误消息而不是简单地返回第一个错误时非常有用。
泛型用于支持任何类型T
和E
的Result<T, E>
。组合结果的Ok
类型不要求相同,但所有Err
类型必须相同。
文档
示例
use multi_try::MultiTry;
struct A {
b: Result<i32, MyErr>,
c: Result<i64, MyErr>,
d: Result<f32, MyErr>,
}
struct ValidatedA {
b: i32,
c: i64,
d: f32,
}
enum MyErr {
FailedB,
FailedC,
FailedD,
}
fn validate(a: A) -> Result<ValidatedA, Vec<MyErr>> {
let (b, c, d) = a.b.and_try(a.c).and_try(a.d)?;
Ok(ValidatedA { b, c, d })
}
查看tests
目录以获取更多示例。
许可协议
许可协议为以下之一
- Apache许可证2.0版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的您有意提交的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。