Add this to your Cargo.toml
:
toml
[dependencies]
contrail = "0.1"
Example usage:
```rust extern crate contrail;
use contrail::{Stored, TrailBuilder, Trailed};
fn main() { // setup the trail let mut builder = TrailBuilder::new(); let trailedcounter = Trailed::new(&mut builder, 0); let storedcounter = Stored::new(&mut builder, 0); let mut trail = builder.finish();
// push a new level onto the trail
trail.new_level();
// increment each counter
trailed_counter.update(&mut trail, |x| x + 1);
stored_counter.update(&mut trail, |x| x + 1);
assert_eq!(trailed_counter.get(&trail), 1);
assert_eq!(stored_counter.get(&trail), 1);
// pop the previous level from the trail
trail.undo_level();
// the trailed counter is reset to its value when new_level() was called
// the stored counter is unchanged
assert_eq!(trailed_counter.get(&trail), 0);
assert_eq!(stored_counter.get(&trail), 1);
} ```