#[inline(always)]
pub fn crc32(data: &[u8]) -> u32 {
crc32fast::hash(data)
}
#[derive(Debug, Default, Clone)]
pub struct Crc32Hasher {
hasher: crc32fast::Hasher,
}
impl Crc32Hasher {
#[inline(always)]
pub fn new() -> Self {
Self {
hasher: crc32fast::Hasher::new(),
}
}
#[inline(always)]
pub fn update(&mut self, bytes: &[u8]) {
self.hasher.update(bytes);
}
#[inline(always)]
pub fn update_u64(&mut self, val: u64) {
self.hasher.update(&val.to_le_bytes());
}
#[inline(always)]
pub fn update_u32(&mut self, val: u32) {
self.hasher.update(&val.to_le_bytes());
}
#[inline(always)]
pub fn finalize(self) -> u32 {
self.hasher.finalize()
}
}