defaultmap/
default_fn.rs

1use dyn_clone::DynClone;
2
3pub trait DefaultFn<V>: DynClone {
4    fn call(&self) -> V;
5}
6
7impl<F, V> DefaultFn<V> for F
8where
9    F: Fn() -> V + Clone,
10{
11    fn call(&self) -> V {
12        self()
13    }
14}
15
16impl<V> Default for Box<dyn DefaultFn<V>>
17where
18    V: Default,
19{
20    fn default() -> Self {
21        Box::new(|| V::default())
22    }
23}
24
25dyn_clone::clone_trait_object!(<V> DefaultFn<V>);