trackable

Crates.io: trackable Documentation Build 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:

```rust

[macro_use]

extern crate trackable;

use trackable::error::{Failed, Failure, ErrorKindExt};

fn foo() -> Result<(), Failure> { track!(std::fs::File::open("/path/to/nonexistentfile") .map_err(|e| Failed.cause(e)))?; 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 rustout::7 [1] at rustout::12 [2] at rust_out::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.