Expand description
This crate provides a Cell type (like the standard library’s
Cell) with methods for safely mutating and inspecting the
inner value by reference (with and with_mut).
For Copy types, this is implemented with get and
set, but through an extension trait, this crate
provides those same operations for types that are Default but not
Copy. A get method is also available for types that are both
Default and Clone.
Example
use cell_ref::{Cell, CellExt};
let c1 = Cell::new(2_u8);
c1.with_mut(|x| *x += 3);
assert!(c1.get() == 5);
let c2 = Cell::new(vec![1, 2, 3]);
c2.with_mut(|v| v.push(4)); // Works even though `Vec` isn't `Copy`
c2.with(|v| assert!(v.len() == 4));
let v = c2.get(); // Clones the vectorStructs
A Cell type with methods for by-reference mutation and inspection.