Module std::hashStable [-] [+] [src]

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 #[derive(Hash)]:

Examples

fn main() { use std::hash::{hash, Hash, SipHasher}; #[derive(Hash)] struct Person { id: uint, 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!(hash::<_, SipHasher>(&person1) != hash::<_, SipHasher>(&person2)); }
use std::hash::{hash, Hash, SipHasher};

#[derive(Hash)]
struct Person {
    id: uint,
    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!(hash::<_, SipHasher>(&person1) != hash::<_, SipHasher>(&person2));

If you need more control over how a value is hashed, you need to implement the trait Hash:

fn main() { use std::hash::{hash, Hash, Hasher, SipHasher}; struct Person { id: uint, 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!(hash::<_, SipHasher>(&person1), hash::<_, SipHasher>(&person2)); }
use std::hash::{hash, Hash, Hasher, SipHasher};

struct Person {
    id: uint,
    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!(hash::<_, SipHasher>(&person1), hash::<_, SipHasher>(&person2));

Structs

SipHasher

An implementation of SipHash 2-4.

Traits

Hash

A hashable type.

Hasher

A trait which represents the ability to hash an arbitrary stream of bytes.

Functions

hash

Hash a value with the default SipHasher algorithm (two initial keys of 0).