pub trait ExtendedHasher: Hasher {
type Hash;
// Required method
fn finish(self) -> Self::Hash;
// Provided method
fn short_write<const LEN: usize>(&mut self, bytes: [u8; LEN]) { ... }
}Expand description
Extended Hasher trait for use with StableHasher.
It permits returning an arbitrary type as the Self::Hash type
contrary to the Hasher trait which can only return u64. This
is useful when the hasher uses a different representation.
§Example
use std::hash::Hasher;
use rustc_stable_hash::ExtendedHasher;
struct BogusHasher(u128);
impl Hasher for BogusHasher {
fn write(&mut self, a: &[u8]) {
// ...
}
fn finish(&self) -> u64 {
self.0 as u64 // really bogus
}
}
impl ExtendedHasher for BogusHasher {
type Hash = u128;
fn short_write<const LEN: usize>(&mut self, bytes: [u8; LEN]) {
self.write(&bytes)
}
fn finish(self) -> Self::Hash {
self.0
}
}Required Associated Types§
Required Methods§
Provided Methods§
Sourcefn short_write<const LEN: usize>(&mut self, bytes: [u8; LEN])
fn short_write<const LEN: usize>(&mut self, bytes: [u8; LEN])
Optimized version of Hasher::write but for small write.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".