1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pub trait Applyable<T> {
    fn apply_to(self, t: &mut T);
}
impl<T> Applyable<T> for Option<T> {
    fn apply_to(self, t: &mut T) {
        if let Some(s) = self {
            *t = s;
        }
    }
}
impl<T> Applyable<T> for T {
    fn apply_to(self, t: &mut T) {
        *t = self;
    }
}