growable_bloom_filter/
stable_hasher.rs1use std::hash::Hasher;
2
3pub struct StableHasher {
10 state: xxhash_rust::xxh3::Xxh3,
12}
13
14impl StableHasher {
15 #[inline]
16 pub fn new() -> Self {
17 Self {
18 state: xxhash_rust::xxh3::Xxh3::new(),
19 }
20 }
21}
22
23impl Hasher for StableHasher {
24 #[inline]
25 fn finish(&self) -> u64 {
26 self.state.finish()
27 }
28
29 #[inline]
30 fn write(&mut self, bytes: &[u8]) {
31 self.state.write(bytes);
32 }
33
34 #[inline]
35 fn write_u8(&mut self, i: u8) {
36 self.state.write_u8(i);
37 }
38
39 #[inline]
40 fn write_u16(&mut self, i: u16) {
41 self.state.write_u16(i.to_le());
42 }
43
44 #[inline]
45 fn write_u32(&mut self, i: u32) {
46 self.state.write_u32(i.to_le());
47 }
48
49 #[inline]
50 fn write_u64(&mut self, i: u64) {
51 self.state.write_u64(i.to_le());
52 }
53
54 #[inline]
55 fn write_u128(&mut self, i: u128) {
56 self.state.write_u128(i.to_le());
57 }
58
59 #[inline]
60 fn write_usize(&mut self, i: usize) {
61 self.state.write_u64((i as u64).to_le());
65 }
66
67 #[inline]
68 fn write_i8(&mut self, i: i8) {
69 self.state.write_i8(i);
70 }
71
72 #[inline]
73 fn write_i16(&mut self, i: i16) {
74 self.state.write_i16(i.to_le());
75 }
76
77 #[inline]
78 fn write_i32(&mut self, i: i32) {
79 self.state.write_i32(i.to_le());
80 }
81
82 #[inline]
83 fn write_i64(&mut self, i: i64) {
84 self.state.write_i64(i.to_le());
85 }
86
87 #[inline]
88 fn write_i128(&mut self, i: i128) {
89 self.state.write_i128(i.to_le());
90 }
91
92 #[inline]
93 fn write_isize(&mut self, i: isize) {
94 self.state.write_i64((i as i64).to_le());
98 }
99}