3 个版本 (1 个稳定版)
1.0.0 | 2024 年 1 月 2 日 |
---|---|
0.2.0 | 2022 年 4 月 20 日 |
0.1.0 | 2022 年 4 月 20 日 |
#771 in Rust 模式
7KB
replace_err
向 Result
类型添加了一个 replace_err
方法,用于丢弃当前错误并用新错误类型替换,相当于 result.map_err(|_| new_error_value)
。
许可证
此代码具有 MIT 和 Apache 2.0 许可证的双重许可。任选其一。
lib.rs
:
有时你想要丢弃错误。
此crate正好只做一件事,它向 Result
类型添加了一个新的方法,如果存在当前错误,则丢弃它并用新值替换。你可以在这里看到它的作用
use replace_err::ReplaceErr as _;
let result = Err(1);
let result: Result<(), _> = result.replace_err("hello");
assert_eq!(result.unwrap_err(), "hello");
这正好等同于使用一个忽略输入并返回其他内容的闭包调用 Result::map_err
。实际上,这就是 replace_err
的实现方式。
大多数时候,你 不 想这样做。通常你想要使用新的层包装先前错误以添加上下文,从而为错误报告者提供越来越具体和低级的解释链,或者基于这些解释链,高级代码可以采取行动。
然而,确实有一些情况,你根本不需要底层错误,而 replace_err
提供了一种方便的方式来表达这种需求。