pub trait Hashable { fn update<H: Hasher>(&self, h: &mut H); fn digest<H: Hasher>(&self) -> <H as Hasher>::Output where Self: Sized, { ... } }