3 releases
Uses new Rust 2024
| 0.1.2 | Aug 27, 2025 |
|---|---|
| 0.1.1 | Aug 25, 2025 |
| 0.1.0 | Aug 18, 2025 |
#1243 in Data structures
112 downloads per month
7KB
88 lines
Reversible<T>
A generic wrapper struct that provides reversible editing capabilities for values of type T: Default + Debug + Clone.
Features
- Tracks changes separately from the original data
- Only clones the original data when modifications begin (lazy cloning)
- Optional Serde support for serialization/deserialization (with
serdefeature) - Implements
AsRef<T>andAsMut<T>for transparent access to the original and changed data.
Example
let mut rev = Reversible::from(4);
assert_eq!(rev.as_mut(), &mut 4);
*rev.as_mut() = 13;
assert_eq!(rev.as_ref(), &4);
assert_eq!(rev.as_mut(), &mut 13);
rev.save();
assert_eq!(rev.as_ref(), &13);
*rev.as_mut() = 4;
assert_eq!(rev.as_ref(), &13);
assert_eq!(rev.as_mut(), &mut 4);
rev.revert();
assert_eq!(rev.as_mut(), &mut 13);
Dependencies
~170KB