Expand description
§Simple undo
An easy to use undo-redo library:
use simple_undo::Undo;
let mut message = Undo::new(String::new());
message.update(|text| text.push_str("Simple "));
message.update(|text| text.push_str("undo !"));
assert_eq!(*message, "Simple undo !");
message.undo(); // "Simple "
message.undo(); // ""
message.redo(); // "Simple "
message.update(|text| text.push_str("redo !"));
assert_eq!(*message, "Simple redo !");
let result: String = message.unwrap();
assert_eq!(result, "Simple redo !");§How it works
Undo wraps the given state and keeps one copy of it.
When Undo::undo is called, the previous state is re-created by re-applying the n-1 updates to the initial state.
If you need better performance, please consider alternatives such as undo or rundo crates, which allow you to define or generate the actual undo operation.
Structs§
- Undo
- The
Undotype wrapping a state that tracks updates and allows undoing or redoing them.