diff --git a/src/lib.rs b/src/lib.rs index fa7e855..390fae1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -154,6 +154,16 @@ impl Default for Digest { } } +impl core::hash::Hasher for Digest { + fn finish(&self) -> u64 { + self.sum64() + } + + fn write(&mut self, bytes: &[u8]) { + self.write(bytes); + } +} + #[cfg(test)] mod tests { use super::*; @@ -217,6 +227,17 @@ mod tests { } } + #[test] + fn test_core_hasher_impl() { + use core::hash::Hasher; + + let mut hasher = Digest::new(); + + Hasher::write(&mut hasher, b"hello "); + Hasher::write(&mut hasher, b"world!"); + assert_eq!(Hasher::finish(&hasher), 0xd9160d1fa8e418e3); + } + fn any_buffer() -> as Arbitrary>::Strategy { any_with::>(size_range(..65536).lift()) }