Module std::hash 1.0.0[−][src]
Expand description
通用哈希支持。
该模块提供了一种计算值的 哈希 的通用方法。
哈希最常与 HashMap
和 HashSet
一起使用。
使类型可哈希化的最简单方法是使用 #[derive(Hash)]
:
Examples
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
#[derive(Hash)]
struct Person {
id: u32,
name: String,
phone: u64,
}
let person1 = Person {
id: 5,
name: "Janet".to_string(),
phone: 555_666_7777,
};
let person2 = Person {
id: 5,
name: "Bob".to_string(),
phone: 555_666_7777,
};
assert!(calculate_hash(&person1) != calculate_hash(&person2));
fn calculate_hash<T: Hash>(t: &T) -> u64 {
let mut s = DefaultHasher::new();
t.hash(&mut s);
s.finish()
}
Run如果您需要更多地控制值的散列方式,则需要实现 Hash
trait:
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
struct Person {
id: u32,
name: String,
phone: u64,
}
impl Hash for Person {
fn hash<H: Hasher>(&self, state: &mut H) {
self.id.hash(state);
self.phone.hash(state);
}
}
let person1 = Person {
id: 5,
name: "Janet".to_string(),
phone: 555_666_7777,
};
let person2 = Person {
id: 5,
name: "Bob".to_string(),
phone: 555_666_7777,
};
assert_eq!(calculate_hash(&person1), calculate_hash(&person2));
fn calculate_hash<T: Hash>(t: &T) -> u64 {
let mut s = DefaultHasher::new();
t.hash(&mut s);
s.finish()
}
RunMacros
派生宏,生成 Hash
trait 的实现。
Structs
用于为实现 Hasher
和 Default
的类型创建默认的 BuildHasher
实例。
SipHasherDeprecated
SipHash 2-4 的实现。