Module core::hash 1.0.0[−][src]
Expand description
通用哈希支持。
该模块提供了一种计算值的 hash 的通用方法。
哈希最常与 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() }Run
Macros
Hash | 派生宏,生成 |
Structs
BuildHasherDefault | 用于为实现 |
SipHasher | Deprecated SipHash 2-4 的实现。 |
Traits
BuildHasher | 用于创建 |
Hash | 可散列的类型。 |
Hasher | trait,用于散列任意字节流。 |