cranelift_codegen_shared/
constant_hash.rs

1//! This module provides a primitive hash function.
2
3/// A primitive hash function for matching opcodes.
4pub fn simple_hash(s: &str) -> usize {
5    let mut h: u32 = 5381;
6    for c in s.chars() {
7        h = (h ^ c as u32).wrapping_add(h.rotate_right(6));
8    }
9    h as usize
10}
11
12#[cfg(test)]
13mod tests {
14    use super::simple_hash;
15
16    #[test]
17    fn basic() {
18        assert_eq!(simple_hash("Hello"), 0x2fa70c01);
19        assert_eq!(simple_hash("world"), 0x5b0c31d5);
20    }
21}