1
2
3
4
5
6
7
8
pub trait DefaultContext {}
impl<T> DefaultContext for T {}

/// why not std?;
/// because a `default` depends on the context.
pub trait Default<I: DefaultContext> {
    fn default() -> Self;
}