#undo #undo-redo #redo

simple-undo

易于使用的撤销-重做库

2个版本

0.1.1 2021年11月22日
0.1.0 2021年10月22日

1114数据结构

MIT 许可证

11KB
159

简单的撤销

一个易于使用的撤销-重做库

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 !");

如何工作

Undo 包装给定的状态并保留一个副本。当调用 Undo::undo 时,通过重新应用n-1个更新到初始状态来重新创建前一个状态。

如果您需要更好的性能,请考虑其他替代方案,如 undorundo 仓库,它们允许您定义或生成实际的撤销操作。

无运行时依赖