1 个不稳定版本
0.1.0 | 2023年6月20日 |
---|
#90 在 #chain
每月120次下载
在 pg_task 中使用
5KB
source-chain
使用它格式化 StdError 及其源链
#[derive(Debug, thiserror::Error)]
enum Error {
#[error("unknown file {1}")]
UnknownFile(#[source] std::io::Error, &'static str),
}
fn file_error() -> Result<String, Error> {
let filename = "unknown-file.txt";
std::fs::read_to_string(filename).map_err(|e| Error::UnknownFile(e, filename))
}
let err = file_error().unwrap_err();
assert_eq!(
source_chain::to_string(&err),
"unknown file unknown-file.txt\nCaused by:\n\tNo such file or directory (os error 2)"
);
let dyn_err: Box<dyn std::error::Error> = Box::new(err);
assert_eq!(
// notice dereferencing
source_chain::to_string(&*dyn_err),
"unknown file unknown-file.txt\nCaused by:\n\tNo such file or directory (os error 2)"
);
贡献
我们感谢所有类型的贡献,谢谢!
关于 README 的说明
大部分的 README 是通过 cargo-sync-readme 自动从 crate 文档中复制的。这样 README 总是与文档同步,并且示例已经过测试。
所以,如果您想更改 README 中的某个部分,在 <!-- cargo-sync-readme start -->
和 <!-- cargo-sync-readme end -->
标记之间,请不要直接编辑 README.md
,而是更改 src/lib.rs
顶部的文档,然后与 README 同步
cargo sync-readme
(请确保已安装 cargo 命令)
cargo install cargo-sync-readme
如果您已安装 rusty-hook,则更改将在提交时自动应用。
许可证
本项目采用 MIT 许可证。