Module std::hash
Generic hashing support.
This module provides a generic way to compute the hash of a value. The
simplest way to make a type hashable is to use #[deriving(Hash)]
:
Example
use std::hash; use std::hash::Hash; #[deriving(Hash)] struct Person { id: uint, name: ~str, phone: u64, } let person1 = Person { id: 5, name: ~"Janet", phone: 555_666_7777 }; let person2 = Person { id: 5, name: ~"Bob", phone: 555_666_7777 }; assert!(hash::hash(&person1) != hash::hash(&person2));
If you need more control over how a value is hashed, you need to implement
the trait Hash
:
use std::hash; use std::hash::Hash; use std::hash::sip::SipState; struct Person { id: uint, name: ~str, phone: u64, } impl Hash for Person { fn hash(&self, state: &mut SipState) { self.id.hash(state); self.phone.hash(state); } } let person1 = Person { id: 5, name: ~"Janet", phone: 555_666_7777 }; let person2 = Person { id: 5, name: ~"Bob", phone: 555_666_7777 }; assert!(hash::hash(&person1) == hash::hash(&person2));
Reexports
pub use self::sip::hash; |
Modules
sip | Implementation of SipHash 2-4 |
Traits
Hash | A trait that represents a hashable type. The |
Hasher | A trait that computes a hash for a value. The main users of this trait are
containers like |