use crate::Hasher as _;
const BASIS: u32 = 0x811c9dc5;
const PRIME: u32 = 0x1000193;
pub struct Hasher {
state: u32,
}
impl Default for Hasher {
fn default() -> Self {
Hasher { state: BASIS }
}
}
impl crate::Hasher for Hasher {
#[inline]
fn finish32(&self) -> u32 {
self.state
}
}
impl core::hash::Hasher for Hasher {
#[inline]
fn write(&mut self, bytes: &[u8]) {
for byte in bytes {
self.state ^= u32::from(*byte);
self.state = self.state.wrapping_mul(PRIME);
}
}
#[inline]
fn finish(&self) -> u64 {
self.finish32().into()
}
}