polars_core/hashing/
identity.rs1use super::*;
2
3#[derive(Default)]
4pub struct IdHasher {
5 hash: u64,
6}
7
8impl Hasher for IdHasher {
9 fn finish(&self) -> u64 {
10 self.hash
11 }
12
13 fn write(&mut self, _bytes: &[u8]) {
14 unreachable!("IdHasher should only be used for integer keys <= 64 bit precision")
15 }
16
17 fn write_u32(&mut self, i: u32) {
18 self.hash = i as u64;
19 }
20
21 #[inline]
22 fn write_u64(&mut self, i: u64) {
23 self.hash = i;
24 }
25
26 fn write_i32(&mut self, i: i32) {
27 self.hash = i as u64;
28 }
29
30 fn write_i64(&mut self, i: i64) {
31 self.hash = i as u64;
32 }
33}
34
35pub type IdBuildHasher = BuildHasherDefault<IdHasher>;