1 2 3 4 5 6 7 8 9 10 11 12
pub trait OptionExt<T> { fn insert(&mut self, val: T, f: impl FnOnce(&T)); } impl<T> OptionExt<T> for Option<T> { fn insert(&mut self, val: T, f: impl FnOnce(&T)) { match self { Some(t) => f(t), slot => *slot = Some(val), } } }