pub trait BuildHasher { type Hasher: Hasher; fn build_hasher(&self) -> Self::Hasher; }
A trait for creating instances of Hasher
.
A BuildHasher
is typically used (e.g. by HashMap
) to create Hasher
s for each key such that they are hashed independently of one another, since Hasher
s contain state.
For each instance of BuildHasher
, the Hasher
s created by build_hasher
should be identical. That is, if the same stream of bytes is fed into each hasher, the same output will also be generated.
use std::collections::hash_map::RandomState; use std::hash::{BuildHasher, Hasher}; let s = RandomState::new(); let mut hasher_1 = s.build_hasher(); let mut hasher_2 = s.build_hasher(); hasher_1.write_u32(8128); hasher_2.write_u32(8128); assert_eq!(hasher_1.finish(), hasher_2.finish());
fn build_hasher(&self) -> Self::Hasher
Creates a new hasher.
Each call to build_hasher
on the same instance should produce identical Hasher
s.
use std::collections::hash_map::RandomState; use std::hash::BuildHasher; let s = RandomState::new(); let new_s = s.build_hasher();
impl<H> BuildHasher for BuildHasherDefault<H> where
H: Default + Hasher, type Hasher = H;
impl BuildHasher for RandomState type Hasher = DefaultHasher;
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/hash/trait.BuildHasher.html