use std::convert::TryFrom;
use std::hash::Hasher;
#[derive(Default)]
pub struct ClientHasher {
prefix: u64,
}
impl Hasher for ClientHasher {
#[inline]
fn finish(&self) -> u64 {
self.prefix
}
#[inline]
fn write(&mut self, bytes: &[u8]) {
debug_assert!(bytes.len() <= 8);
debug_assert!(self.prefix == 0);
self.prefix = if bytes.len() == 4 {
u32::from_ne_bytes(<[u8; 4]>::try_from(bytes).unwrap()) as u64
} else {
u64::from_ne_bytes(<[u8; 8]>::try_from(bytes).unwrap())
};
}
}