#[derive(Clone, Default)]
pub struct ContentHash {
hasher: blake3::Hasher,
}
impl ContentHash {
#[inline]
#[must_use]
pub fn new() -> Self {
Self {
hasher: blake3::Hasher::new(),
}
}
#[inline]
pub fn update(&mut self, data: &[u8]) {
self.hasher.update(data);
}
#[inline]
#[must_use]
pub fn finalize(&self) -> [u8; 32] {
self.hasher.finalize().into()
}
#[inline]
#[must_use]
pub fn finalize_hex(&self) -> String {
self.hasher.finalize().to_hex().to_string()
}
}
#[inline]
#[must_use]
pub fn hash(data: &[u8]) -> [u8; 32] {
blake3::hash(data).into()
}