| 1 | //! A base trait to expose a precomputed hash for a type. |
| 2 | |
| 3 | /// A trait to expose a precomputed hash for a type. |
| 4 | pub 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. |
| 12 | impl<'a, T: PrecomputedHash> PrecomputedHash for &'a T { |
| 13 | fn precomputed_hash(&self) -> u32 { |
| 14 | (**self).precomputed_hash() |
| 15 | } |
| 16 | } |
| 17 | |
| 18 | impl<'a, T: PrecomputedHash> PrecomputedHash for &'a mut T { |
| 19 | fn precomputed_hash(&self) -> u32 { |
| 20 | (**self).precomputed_hash() |
| 21 | } |
| 22 | } |
| 23 | |