statsig_rust/hashing/djb2.rs
1#[must_use]
2pub fn djb2(input: &str) -> String {
3 djb2_number(input).to_string()
4}
5
6#[must_use]
7pub fn djb2_number(input: &str) -> i64 {
8 let mut hash: i64 = 0;
9
10 for c in input.chars() {
11 hash = ((hash << 5).wrapping_sub(hash)).wrapping_add(c as i64);
12 }
13
14 // Convert to unsigned 32-bit integer
15 hash &= 0xFFFF_FFFF;
16
17 hash
18}