22 lines
643 B
Rust
22 lines
643 B
Rust
//! A base trait to expose a precomputed hash for a type.
|
|
|
|
/// A trait to expose a precomputed hash for a type.
|
|
pub trait PrecomputedHash {
|
|
// TODO(emilio): Perhaps an associated type would be on point here.
|
|
|
|
/// Return the precomputed hash for this item.
|
|
fn precomputed_hash(&self) -> u32;
|
|
}
|
|
|
|
// These are equivalent to the `std::Hash` impls.
|
|
impl<'a, T: PrecomputedHash> PrecomputedHash for &'a T {
|
|
fn precomputed_hash(&self) -> u32 {
|
|
(**self).precomputed_hash()
|
|
}
|
|
}
|
|
|
|
impl<'a, T: PrecomputedHash> PrecomputedHash for &'a mut T {
|
|
fn precomputed_hash(&self) -> u32 {
|
|
(**self).precomputed_hash()
|
|
}
|
|
}
|