1//! A base trait to expose a precomputed hash for a type.
2
3/// A trait to expose a precomputed hash for a type.
4pub trait PrecomputedHash {
5 // TODO(emilio): Perhaps an associated type would be on point here.
6
7 /// Return the precomputed hash for this item.
8 fn precomputed_hash(&self) -> u32;
9}
10
11// These are equivalent to the `std::Hash` impls.
12impl<'a, T: PrecomputedHash> PrecomputedHash for &'a T {
13 fn precomputed_hash(&self) -> u32 {
14 (**self).precomputed_hash()
15 }
16}
17
18impl<'a, T: PrecomputedHash> PrecomputedHash for &'a mut T {
19 fn precomputed_hash(&self) -> u32 {
20 (**self).precomputed_hash()
21 }
22}
23