#error #replace #error-value #throw #away #error-handling #err

replace_err

Result 类型添加了一个 replace_err 方法,用于丢弃当前错误并替换它

3 个版本 (1 个稳定版)

1.0.0 2024 年 1 月 2 日
0.2.0 2022 年 4 月 20 日
0.1.0 2022 年 4 月 20 日

#771 in Rust 模式

MIT/Apache

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 提供了一种方便的方式来表达这种需求。

无运行时依赖