| use crate::{Adler32, Adler32Hash}; |
| |
| impl Adler32Hash for &[u8] { |
| fn hash(&self) -> u32 { |
| let mut hash = Adler32::new(); |
| |
| hash.write(self); |
| hash.finish() |
| } |
| } |
| |
| impl Adler32Hash for &str { |
| fn hash(&self) -> u32 { |
| let mut hash = Adler32::new(); |
| |
| hash.write(self.as_bytes()); |
| hash.finish() |
| } |
| } |
| |
| #[cfg(feature = "const-generics")] |
| impl<const SIZE: usize> Adler32Hash for [u8; SIZE] { |
| fn hash(&self) -> u32 { |
| let mut hash = Adler32::new(); |
| |
| hash.write(self); |
| hash.finish() |
| } |
| } |
| |
| macro_rules! array_impl { |
| ($s:expr, $($size:expr),+) => { |
| array_impl!($s); |
| $(array_impl!{$size})* |
| }; |
| ($size:expr) => { |
| #[cfg(not(feature = "const-generics"))] |
| impl Adler32Hash for [u8; $size] { |
| fn hash(&self) -> u32 { |
| let mut hash = Adler32::new(); |
| |
| hash.write(self); |
| hash.finish() |
| } |
| } |
| }; |
| } |
| |
| array_impl!( |
| 0, |
| 1, |
| 2, |
| 3, |
| 4, |
| 5, |
| 6, |
| 7, |
| 8, |
| 9, |
| 10, |
| 11, |
| 12, |
| 13, |
| 14, |
| 15, |
| 16, |
| 17, |
| 18, |
| 19, |
| 20, |
| 21, |
| 22, |
| 23, |
| 24, |
| 25, |
| 26, |
| 27, |
| 28, |
| 29, |
| 30, |
| 31, |
| 32, |
| 33, |
| 34, |
| 35, |
| 36, |
| 37, |
| 38, |
| 39, |
| 40, |
| 41, |
| 42, |
| 43, |
| 44, |
| 45, |
| 46, |
| 47, |
| 48, |
| 49, |
| 50, |
| 51, |
| 52, |
| 53, |
| 54, |
| 55, |
| 56, |
| 57, |
| 58, |
| 59, |
| 60, |
| 61, |
| 62, |
| 63, |
| 64, |
| 65, |
| 66, |
| 67, |
| 68, |
| 69, |
| 70, |
| 71, |
| 72, |
| 73, |
| 74, |
| 75, |
| 76, |
| 77, |
| 78, |
| 79, |
| 80, |
| 81, |
| 82, |
| 83, |
| 84, |
| 85, |
| 86, |
| 87, |
| 88, |
| 89, |
| 90, |
| 91, |
| 92, |
| 93, |
| 94, |
| 95, |
| 96, |
| 97, |
| 98, |
| 99, |
| 100, |
| 1024, |
| 1024 * 1024, |
| 1024 * 1024 * 1024, |
| 2048, |
| 4096 |
| ); |