diff options
| author | bors <bors@rust-lang.org> | 2016-12-19 12:17:24 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-12-19 12:17:24 +0000 |
| commit | 10271ea24fbd7b28a42df8eb02a8dcf6d6132d71 (patch) | |
| tree | 4e6317a08c4c8cf2b0cbef21dd235222ccce77c1 /src/libcore | |
| parent | e70415bd716cdbfaa7d7e849cb1d3b09254a7dcb (diff) | |
| parent | 05be48b18b896c16b36cf3f68c14c87b79081f94 (diff) | |
| download | rust-10271ea24fbd7b28a42df8eb02a8dcf6d6132d71.tar.gz rust-10271ea24fbd7b28a42df8eb02a8dcf6d6132d71.zip | |
Auto merge of #38466 - sanxiyn:rollup, r=sanxiyn
Rollup of 9 pull requests - Successful merges: #38334, #38397, #38413, #38421, #38422, #38433, #38438, #38445, #38459 - Failed merges:
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/hash/mod.rs | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/src/libcore/hash/mod.rs b/src/libcore/hash/mod.rs index ac36cbaace7..18b465d85a1 100644 --- a/src/libcore/hash/mod.rs +++ b/src/libcore/hash/mod.rs @@ -255,10 +255,44 @@ pub trait BuildHasher { fn build_hasher(&self) -> Self::Hasher; } -/// A structure which implements `BuildHasher` for all `Hasher` types which also -/// implement `Default`. +/// The `BuildHasherDefault` structure is used in scenarios where one has a +/// type that implements [`Hasher`] and [`Default`], but needs that type to +/// implement [`BuildHasher`]. /// -/// This struct is 0-sized and does not need construction. +/// This structure is zero-sized and does not need construction. +/// +/// # Examples +/// +/// Using `BuildHasherDefault` to specify a custom [`BuildHasher`] for +/// [`HashMap`]: +/// +/// ``` +/// use std::collections::HashMap; +/// use std::hash::{BuildHasherDefault, Hasher}; +/// +/// #[derive(Default)] +/// struct MyHasher; +/// +/// impl Hasher for MyHasher { +/// fn write(&mut self, bytes: &[u8]) { +/// // Your hashing algorithm goes here! +/// unimplemented!() +/// } +/// +/// fn finish(&self) -> u64 { +/// // Your hashing algorithm goes here! +/// unimplemented!() +/// } +/// } +/// +/// type MyBuildHasher = BuildHasherDefault<MyHasher>; +/// +/// let hash_map = HashMap::<u32, u32, MyBuildHasher>::default(); +/// ``` +/// +/// [`BuildHasher`]: trait.BuildHasher.html +/// [`Default`]: ../default/trait.Default.html +/// [`Hasher`]: trait.Hasher.html #[stable(since = "1.7.0", feature = "build_hasher")] pub struct BuildHasherDefault<H>(marker::PhantomData<H>); |
