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