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}