| Crates.io | snaplog |
| lib.rs | snaplog |
| version | 0.4.0 |
| created_at | 2022-07-10 14:57:37.043802+00 |
| updated_at | 2022-09-25 11:35:31.63057+00 |
| description | A library for easily recording changes to values |
| homepage | |
| repository | https://github.com/epbuennig/snaplog/ |
| max_upload_size | |
| id | 623160 |
| size | 76,981 |
Snaplog is a library that provides the Snaplog type, a struct that records changes to a value of
type 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);