7个不稳定版本 (3个重大变更)
0.4.0 | 2022年9月25日 |
---|---|
0.3.2 | 2022年9月11日 |
0.3.1 | 2022年7月16日 |
0.2.1 | 2022年7月14日 |
0.1.0 | 2022年7月10日 |
#1029 in 算法
74KB
716 行
Snaplog
Snaplog是一个库,提供了Snaplog
类型,一个结构体,用于记录类型T
值的变更。
示例
use snaplog::{Select, Snaplog};
let mut snaplog: Snaplog<_> = vec![
"/path/to/file".to_string(),
"/path/to/file-backup".to_string(),
"/path/file-backup".to_string()
].try_into()?;
assert_eq!(snaplog.has_changes(), true);
snaplog.record_change(|prev| format!("{prev}-copy"));
snaplog.record_change(|_| "/path/file".to_string());
assert_eq!(snaplog[Select::Initial], "/path/to/file");
assert_eq!(snaplog[Select::At(3)], "/path/file-backup-copy");
assert_eq!(snaplog[Select::Current], "/path/file");
snaplog.clear_history();
assert_eq!(snaplog.history(), ["/path/file"]);
assert_eq!(snaplog.has_changes(), false);
链接
lib.rs
:
Snaplog是一个库,提供了Snaplog
类型,一个结构体,通过在每个变更后保存值的快照来记录类型T
的变更。
示例
use snaplog::{Select, Snaplog};
let mut snaplog: Snaplog<_> = vec![
"/path/to/file".to_string(),
"/path/to/file-backup".to_string(),
"/path/file-backup".to_string()
].try_into()?;
assert_eq!(snaplog.has_changes(), true);
snaplog.record_change(|prev| format!("{prev}-copy"));
snaplog.record("/path/file".to_string());
assert_eq!(snaplog[Select::Initial], "/path/to/file");
assert_eq!(snaplog[Select::At(3)], "/path/file-backup-copy");
assert_eq!(snaplog[Select::Current], "/path/file");
snaplog.clear_history();
assert_eq!(snaplog.history(), ["/path/file"]);
assert_eq!(snaplog.has_changes(), false);