my_pwd/hash/mod.rs
1/// 梅森哈希
2///
3/// 用梅森素数127计算哈希值
4///
5/// # 示例
6/// ```
7/// use hash::merhash::mersenne_hash;
8/// let seed:&str = "katte";
9/// let hash = mersenne_hash(seed);
10/// assert_eq!(830583, hash);
11/// ```
12pub fn mersenne_hash(seed: &str) -> usize {
13 let mut hash = 0;
14
15 for (i, c) in seed.chars().enumerate() {
16 hash += (i + 1) * (c as usize)
17 }
18
19 (hash % 127).pow(3) - 1
20}