5个版本
0.2.1 | 2023年3月21日 |
---|---|
0.2.0 | 2021年7月7日 |
0.1.2 | 2021年4月21日 |
0.1.1 | 2020年7月11日 |
0.1.0 | 2020年3月29日 |
#229 in 进程宏
16,720 每月下载量
用于 8 crates
14KB
55 行
fn-error-context
为函数错误添加上下文的属性宏。
#[context("failed to parse config at `{}`", path.display())]
pub fn parse_config(path: &Path) -> anyhow::Result<u32> {
let text = read_to_string(path)?;
Ok(text.parse()?)
}
lib.rs
:
该crate提供了context
宏,用于为函数添加额外的错误信息。
与anyhow
、failure
和其他提供字符串类型context
方法的错误类型兼容。
#
use fn_error_context::context;
#[context("failed to parse config at `{}`", path.as_ref().display())]
pub fn parse_config(path: impl AsRef<Path>) -> anyhow::Result<u32> {
let text = read_to_string(path.as_ref())?;
Ok(text.parse()?)
}
let error = parse_config("not-found").unwrap_err();
assert_eq!(
error.to_string(),
"failed to parse config at `not-found`",
);
assert_eq!(
error.source().unwrap().downcast_ref::<io::Error>().unwrap().kind(),
io::ErrorKind::NotFound,
);
依赖项
~275–720KB
~17K SLoC