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>);