Expand description
§anyhow_ext
An extension of anyhow. A drop-in replacement of anyhow.
§Features
- Attach file location info in error message
- Use
dotto make a small backtrace.
§usage
§Work with anyhow!
[dependencies]
anyhow = "1"
anyhow_ext = "0.2"Then use anyhow_ext::Context instead of anyhow::Context.
use anyhow::{anyhow, Result};
use anyhow_ext::Context;
fn foo() -> Result<()> {
Err(anyhow!("an anyhow err")).context("wrap with file info")?;
Ok(())
}§drop-in replacement of anyhow
Since anyhow_ext re-exports all the thing in anyhow except for Context, you can use anyhow_ext as a drop-in replacement.
Cargo.toml
[dependencies]
anyhow_ext = "0.2"Then
use anyhow_ext::{Result,anyhow,Context};
fn foo() -> Result<()> {
Err(anyhow!("an anyhow err")).context("wrap with file info")?;
Ok(())
}§How location info is displayed
println!("{}", err) looks like
foo err at `src/bin/anyhow_ext.rs@6:11`and println!("{:?}", err) looks like
foo err at `src/bin/anyhow_ext.rs@6:11`
Caused by:
0: read_a_file err at `src/bin/anyhow_ext.rs@10:19`
1: an io err at `src/bin/anyhow_ext.rs@15:55`
2: No such file or directory (os error 2)§dot to make a small backtrace
use anyhow_ext::{Context, Result};
fn foo() -> Result<()> {
std::fs::read_to_string("file_not_exists.txt").dot()?;
Ok(())
}
fn bar() -> Result<()> {
foo().dot()?;
Ok(())
}
fn main() {
if let Err(err) = try_main().dot() {
println!("{:?}", err);
}
}
fn try_main() -> Result<()> {
bar().dot()?;
Ok(())
}This will make a small backtrace.
at `examples/dot.rs@14:34`
Caused by:
0: at `examples/dot.rs@20:11`
1: at `examples/dot.rs@9:11`
2: at `examples/dot.rs@4:52`
3: No such file or directory (os error 2)Macros§
- anyhow
- re-exports
Construct an ad-hoc error from a string or existing non-
anyhowerror value. - bail
- re-exports Return early with an error.
- ensure
- re-exports
Structs§
- Chain
- Iterator of a chain of source errors.
- Error
- The
Errortype, a wrapper around a dynamic error type.
Traits§
Functions§
- Ok
- Equivalent to Ok::<_, anyhow::Error>(value).
Type Aliases§
- Result
Result<T, Error>