defaultmap 0.7.0

Provides a HashMap with an automatic default for missing keys.
Documentation
use dyn_clone::DynClone;

pub trait DefaultFn<V>: DynClone {
    fn call(&self) -> V;
}

impl<F, V> DefaultFn<V> for F
where
    F: Fn() -> V + Clone,
{
    fn call(&self) -> V {
        self()
    }
}

impl<V> Default for Box<dyn DefaultFn<V>>
where
    V: Default,
{
    fn default() -> Self {
        Box::new(|| V::default())
    }
}

dyn_clone::clone_trait_object!(<V> DefaultFn<V>);