# Snaplog
Snaplog is a library that provides the `Snaplog` type, a struct that records changes to a value of
type `T`.
# Examples
```rust
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"));
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);
```
# Links
- [docs.rs/snaplog](https://docs.rs/snaplog)
- [crates.io/snaplog](https://crates.io/snaplog)