use std::ops::{Deref, DerefMut}; pub struct MutDetect { inner: T, pub changed: bool, } impl Deref for MutDetect { type Target = T; fn deref(&self) -> &Self::Target { &self.inner } } impl DerefMut for MutDetect { fn deref_mut(&mut self) -> &mut Self::Target { self.changed = true; &mut self.inner } } impl From for MutDetect { fn from(inner: T) -> Self { MutDetect { inner, changed: true, } } }