Simple undo

An easy to use undo-redo library:

```rust use simple_undo::Undo;

let mut message = Undo::new(String::new()); message.update(|text| text.pushstr("Simple ")); message.update(|text| text.pushstr("undo !")); assert_eq!(*message, "Simple undo !");

message.undo(); // "Simple " message.undo(); // "" message.redo(); // "Simple "

message.update(|text| text.pushstr("redo !")); asserteq!(*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.