#trackable

trackable

This library provides a way to track objects manually as an alternative to mechanisms like backtracing

37 releases (3 stable)

Uses old Rust 2015

1.2.0 Apr 3, 2021
1.1.0 Mar 10, 2021
1.0.0 May 5, 2020
0.2.24 Mar 14, 2021
0.1.6 Mar 22, 2017

#68 in Debugging

Download history 4360/week @ 2020-12-20 3857/week @ 2020-12-27 6166/week @ 2021-01-03 5649/week @ 2021-01-10 5638/week @ 2021-01-17 5435/week @ 2021-01-24 6010/week @ 2021-01-31 7048/week @ 2021-02-07 6866/week @ 2021-02-14 7478/week @ 2021-02-21 8423/week @ 2021-02-28 7955/week @ 2021-03-07 8152/week @ 2021-03-14 8135/week @ 2021-03-21 8742/week @ 2021-03-28 7867/week @ 2021-04-04

30,208 downloads per month
Used in less than 60 crates

MIT license

47KB
801 lines

trackable

Crates.io: trackable Documentation Actions Status Coverage Status License: MIT

trackable provides functionalities to define trackable objects and track those.

Documentation

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

~0.4–0.9MB
~21K SLoC