Crate contrail[−][src]
Backtrackable primitives and data structures.
Examples
use contrail::{Stored, TrailBuilder, Trailed}; // setup the trail let mut builder = TrailBuilder::new(); let trailed_counter = Trailed::new(&mut builder, 0); let stored_counter = 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);
Modules
collections |
Collections built out of trailed and stored primitives. |
mem |
Low-level memory management. |
Structs
Stored | |
StoredArray | |
Trail |
The trail itself. |
TrailBuilder |
A builder to create a |
Trailed |
A generic trailed value. |
TrailedArray |