1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pub trait Apply<D> {
    fn apply(&mut self, diff: D);
}

impl<T> Apply<T> for T {
    fn apply(&mut self, diff: T) {
        *self = diff;
    }
}

impl<T> Apply<T> for Option<T> {
    fn apply(&mut self, diff: T) {
        *self = Some(diff);
    }
}