diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2016-01-21 10:28:39 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2016-01-26 08:39:07 -0800 |
| commit | 1fa0be2bc038e0575a601ba0273cd83d91d064f2 (patch) | |
| tree | 7f73d02c1762d6958e343176469b934b46ef31cc /src/librustc_data_structures | |
| parent | 670f5b06e47d847b3fc8c61392a65202f1d3dfa2 (diff) | |
| download | rust-1fa0be2bc038e0575a601ba0273cd83d91d064f2.tar.gz rust-1fa0be2bc038e0575a601ba0273cd83d91d064f2.zip | |
std: Stabilize custom hasher support in HashMap
This commit implements the stabilization of the custom hasher support intended for 1.7 but left out due to some last-minute questions that needed some decisions. A summary of the actions done in this PR are: Stable * `std::hash::BuildHasher` * `BuildHasher::Hasher` * `BuildHasher::build_hasher` * `std::hash::BuildHasherDefault` * `HashMap::with_hasher` * `HashMap::with_capacity_and_hasher` * `HashSet::with_hasher` * `HashSet::with_capacity_and_hasher` * `std::collections::hash_map::RandomState` * `RandomState::new` Deprecated * `std::collections::hash_state` * `std::collections::hash_state::HashState` - this trait was also moved into `std::hash` with a reexport here to ensure that we can have a blanket impl to prevent immediate breakage on nightly. Note that this is unstable in both location. * `HashMap::with_hash_state` - renamed * `HashMap::with_capacity_and_hash_state` - renamed * `HashSet::with_hash_state` - renamed * `HashSet::with_capacity_and_hash_state` - renamed Closes #27713
Diffstat (limited to 'src/librustc_data_structures')
| -rw-r--r-- | src/librustc_data_structures/fnv.rs | 11 | ||||
| -rw-r--r-- | src/librustc_data_structures/lib.rs | 1 |
2 files changed, 5 insertions, 7 deletions
diff --git a/src/librustc_data_structures/fnv.rs b/src/librustc_data_structures/fnv.rs index 77baa84c023..6f4dc28e122 100644 --- a/src/librustc_data_structures/fnv.rs +++ b/src/librustc_data_structures/fnv.rs @@ -9,21 +9,20 @@ // except according to those terms. use std::collections::{HashMap, HashSet}; -use std::collections::hash_state::DefaultState; use std::default::Default; -use std::hash::{Hasher, Hash}; +use std::hash::{Hasher, Hash, BuildHasherDefault}; -pub type FnvHashMap<K, V> = HashMap<K, V, DefaultState<FnvHasher>>; -pub type FnvHashSet<V> = HashSet<V, DefaultState<FnvHasher>>; +pub type FnvHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FnvHasher>>; +pub type FnvHashSet<V> = HashSet<V, BuildHasherDefault<FnvHasher>>; #[allow(non_snake_case)] pub fn FnvHashMap<K: Hash + Eq, V>() -> FnvHashMap<K, V> { - Default::default() + HashMap::default() } #[allow(non_snake_case)] pub fn FnvHashSet<V: Hash + Eq>() -> FnvHashSet<V> { - Default::default() + HashSet::default() } /// A speedy hash algorithm for node ids and def ids. The hashmap in diff --git a/src/librustc_data_structures/lib.rs b/src/librustc_data_structures/lib.rs index 1fbbdf17455..20caf7dd0cf 100644 --- a/src/librustc_data_structures/lib.rs +++ b/src/librustc_data_structures/lib.rs @@ -24,7 +24,6 @@ html_favicon_url = "https://www.rust-lang.org/favicon.ico", html_root_url = "https://doc.rust-lang.org/nightly/")] -#![feature(hashmap_hasher)] #![feature(nonzero)] #![feature(rustc_private)] #![feature(staged_api)] |
