@@ -156,14 +156,14 @@ impl<K: Hash + Eq, V, S: BuildHasher> LinkedHashMap<K, V, S> {
156
156
}
157
157
}
158
158
159
- /// Creates an empty linked hash map with the given initial hash state .
160
- pub fn with_hash_state ( hash_state : S ) -> Self {
161
- Self :: with_map ( HashMap :: with_hasher ( hash_state ) )
159
+ /// Creates an empty linked hash map with the given initial hash builder .
160
+ pub fn with_hasher ( hash_builder : S ) -> Self {
161
+ Self :: with_map ( HashMap :: with_hasher ( hash_builder ) )
162
162
}
163
163
164
- /// Creates an empty linked hash map with the given initial capacity and hash state .
165
- pub fn with_capacity_and_hash_state ( capacity : usize , hash_state : S ) -> Self {
166
- Self :: with_map ( HashMap :: with_capacity_and_hasher ( capacity, hash_state ) )
164
+ /// Creates an empty linked hash map with the given initial capacity and hash builder .
165
+ pub fn with_capacity_and_hasher ( capacity : usize , hash_builder : S ) -> Self {
166
+ Self :: with_map ( HashMap :: with_capacity_and_hasher ( capacity, hash_builder ) )
167
167
}
168
168
169
169
/// Reserves capacity for at least `additional` more elements to be inserted into the map. The
@@ -467,6 +467,11 @@ impl<K: Hash + Eq, V, S: BuildHasher> LinkedHashMap<K, V, S> {
467
467
/// Returns whether the map is currently empty.
468
468
pub fn is_empty ( & self ) -> bool { self . len ( ) == 0 }
469
469
470
+ /// Returns a reference to the map's hasher.
471
+ pub fn hasher ( & self ) -> & S {
472
+ self . map . hasher ( )
473
+ }
474
+
470
475
/// Clears the map of all key-value pairs.
471
476
pub fn clear ( & mut self ) {
472
477
self . map . clear ( ) ;
@@ -629,18 +634,18 @@ impl<K: Hash + Eq, V, S: BuildHasher> LinkedHashMap<K, V, S> {
629
634
630
635
impl < K : Hash + Eq + Clone , V : Clone , S : BuildHasher + Clone > Clone for LinkedHashMap < K , V , S > {
631
636
fn clone ( & self ) -> Self {
632
- let mut map = Self :: with_hash_state ( self . map . hasher ( ) . clone ( ) ) ;
637
+ let mut map = Self :: with_hasher ( self . map . hasher ( ) . clone ( ) ) ;
633
638
map. extend ( self . iter ( ) . map ( |( k, v) | ( k. clone ( ) , v. clone ( ) ) ) ) ;
634
639
map
635
640
}
636
641
}
637
642
638
643
impl < K : Hash + Eq , V , S : BuildHasher + Default > Default for LinkedHashMap < K , V , S > {
639
- fn default ( ) -> Self { LinkedHashMap :: with_hash_state ( Default :: default ( ) ) }
644
+ fn default ( ) -> Self { Self :: with_hasher ( S :: default ( ) ) }
640
645
}
641
646
642
647
impl < K : Hash + Eq , V , S : BuildHasher > Extend < ( K , V ) > for LinkedHashMap < K , V , S > {
643
- fn extend < T : IntoIterator < Item =( K , V ) > > ( & mut self , iter : T ) {
648
+ fn extend < I : IntoIterator < Item =( K , V ) > > ( & mut self , iter : I ) {
644
649
for ( k, v) in iter {
645
650
self . insert ( k, v) ;
646
651
}
@@ -660,7 +665,7 @@ impl<'a, K, V, S> Extend<(&'a K, &'a V)> for LinkedHashMap<K, V, S>
660
665
impl < K : Hash + Eq , V , S : BuildHasher + Default > iter:: FromIterator < ( K , V ) > for LinkedHashMap < K , V , S > {
661
666
fn from_iter < I : IntoIterator < Item =( K , V ) > > ( iter : I ) -> Self {
662
667
let iter = iter. into_iter ( ) ;
663
- let mut map = Self :: with_capacity_and_hash_state ( iter. size_hint ( ) . 0 , Default :: default ( ) ) ;
668
+ let mut map = Self :: with_capacity_and_hasher ( iter. size_hint ( ) . 0 , S :: default ( ) ) ;
664
669
map. extend ( iter) ;
665
670
map
666
671
}
0 commit comments