trackable

Crates.io: trackable 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> { tracktry!(std::fs::File::open("/path/to/nonexistentfile") .maperr(|e| Failed.cause(e))); Ok(()) } fn bar() -> Result<(), Failure> { tracktry!(foo()); Ok(()) } fn baz() -> Result<(), Failure> { tracktry!(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.

Installation

Add following lines to your Cargo.toml:

toml [dependencies] trackable = "0.1"