1use futures_signals::{signal::Mutable, signal_vec::MutableVec};
2
3pub trait Callback<E = ()>: Clone + 'static {
6 fn callback_with<F>(&self, f: F) -> Box<dyn Fn(E) + 'static>
9 where
10 F: Fn(&Self, E) + 'static,
11 {
12 let state = self.clone();
13 let cb = move |e| {
14 f(&state, e);
15 };
16 Box::new(cb)
17 }
18 fn callback<F>(&self, f: F) -> Box<dyn Fn(E) + 'static>
20 where
21 F: Fn(&Self) + 'static,
22 {
23 let state = self.clone();
24 let cb = move |_| {
25 f(&state);
26 };
27 Box::new(cb)
28 }
29}
30
31impl<T: Clone + 'static, E> Callback<E> for Mutable<T> {}
32
33impl<T: Clone + 'static, E> Callback<E> for MutableVec<T> {}