Redo
An undo/redo library with static dispatch, state handling and manual command merging.
About
It uses the Command Pattern where the user implements the RedoCmd trait for a command.
The RedoStack has two states, clean and dirty. The stack is clean when no more commands can
be redone, otherwise it is dirty. The stack will notice when it's state changes to either dirty
or clean, and call the user defined methods set in on_clean and on_dirty.
This is useful if you want to trigger some event when the state changes, eg. enabling and
disabling buttons in an ui.
It also supports merging of commands by implementing the merge method for a command.
Redo vs Undo
| Redo | Undo | |
|---|---|---|
| Dispatch | Static | Dynamic |
| State Handling | Yes | Yes |
| Command Merging | Yes (manual) | Yes (automatic) |
redo uses static dispatch instead of dynamic dispatch to store the commands, which means
it should be faster than undo. However, this means that you can only store one type of
command in a RedoStack at a time. Both supports state handling and command merging but
undo will automatically merge commands with the same id, while in redo you need to implement
the merge method yourself.
Examples
[]
= "0.3.0"
use ;