summaryrefslogtreecommitdiff
path: root/vendor/simd-adler32/src/hash.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/simd-adler32/src/hash.rs')
-rw-r--r--vendor/simd-adler32/src/hash.rs156
1 files changed, 156 insertions, 0 deletions
diff --git a/vendor/simd-adler32/src/hash.rs b/vendor/simd-adler32/src/hash.rs
new file mode 100644
index 0000000..558542b
--- /dev/null
+++ b/vendor/simd-adler32/src/hash.rs
@@ -0,0 +1,156 @@
+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
+);