5 releases
0.2.1 | Mar 21, 2023 |
---|---|
0.2.0 | Jul 7, 2021 |
0.1.2 | Apr 21, 2021 |
0.1.1 | Jul 11, 2020 |
0.1.0 | Mar 29, 2020 |
#316 in Procedural macros
17,947 downloads per month
Used in 14 crates
(11 directly)
14KB
55 lines
fn-error-context
An attribute macro to add context to errors from a function.
#[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
:
This crate provides the context
macro for adding extra error
information to a function.
Works with anyhow
, failure
and any other error type which
provides a context
method taking a string.
#
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,
);
Dependencies
~250–700KB
~17K SLoC