use crate::Receiver; pub trait Mutable<'a, D> where D: Clone + 'static, { fn new(value: D) -> Self where D: Sized; fn get(&self) -> &D; fn set(&mut self, value: D); fn on_change(&mut self, receiver: R) where R: Receiver> + Send + 'a; // fn change_map(&mut self, func: F) -> R // where // F: Fn(&D) -> T + Send + 'static, // R: Mutable; } #[derive(Debug, Clone, Copy)] pub struct Changed { pub old: D, pub new: D, }