core::hash - Rust
Description: API documentation for the Rust `hash` mod in crate `core`.
Keywords: rust, rustlang, rust-lang, hash

# 1.0.0[−][src]Module core::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 `#[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

If you need more control over how a value is hashed, you need to implement the `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 | Derive macro generating an impl of the trait `Hash`.

## Structs

BuildHasherDefault | Used to create a default `BuildHasher` instance for types that implement `Hasher` and `Default`.
SipHasher | Deprecated An implementation of SipHash 2-4.

## Traits

BuildHasher | A trait for creating instances of `Hasher`.
Hash | A hashable type.
Hasher | A trait for hashing an arbitrary stream of bytes.