38 releases (4 stable)
Uses old Rust 2015
1.3.0 | May 5, 2023 |
---|---|
1.2.0 | Apr 3, 2021 |
1.1.0 | Mar 10, 2021 |
1.0.0 | May 5, 2020 |
0.1.6 | Mar 22, 2017 |
#35 in Debugging
208,841 downloads per month
Used in 147 crates
(61 directly)
48KB
801 lines
trackable
trackable
provides functionalities to define trackable objects and track those.
Below code is an example that tracks failure of an I/O operation:
#[macro_use]
extern crate trackable;
use trackable::error::Failure;
fn foo() -> Result<(), Failure> {
track!(std::fs::File::open("/path/to/non_existent_file").map_err(Failure::from_error))?;
Ok(())
}
fn bar() -> Result<(), Failure> {
track!(foo())?;
Ok(())
}
fn baz() -> Result<(), Failure> {
track!(bar())?;
Ok(())
}
fn main() {
let result = baz();
assert!(result.is_err());
let error = result.err().unwrap();
assert_eq!(format!("\r{}", error), r#"
Failed (cause; No such file or directory)
HISTORY:
[0] at rust_out:<anon>:7
[1] at rust_out:<anon>:12
[2] at rust_out:<anon>:16
"#);
}
This example used the built-in Failure
type, but you can easily define your own trackable error types.
See the documentaion of error module for more details.
Dependencies
~1.5MB
~36K SLoC