@@ -697,9 +697,8 @@ where
697
697
/// assert_eq!(map.values_len(), 2);
698
698
/// ```
699
699
pub fn append ( & mut self , key : Key , value : Value ) -> bool {
700
- let hash = hash_key ( & self . build_hasher , & key) ;
700
+ let hash = self . build_hasher . hash_one ( & key) ;
701
701
let entry = raw_entry_mut ( & self . keys , & mut self . map , hash, & key) ;
702
- let build_hasher = & self . build_hasher ;
703
702
704
703
match entry {
705
704
RawEntryMut :: Occupied ( mut entry) => {
@@ -723,7 +722,7 @@ where
723
722
let keys = & self . keys ;
724
723
let _ = entry. insert_with_hasher ( hash, key_index, MapEntry :: new ( index) , |& key_index| {
725
724
let key = keys. get ( key_index) . unwrap ( ) ;
726
- hash_key ( build_hasher, key)
725
+ self . build_hasher . hash_one ( key)
727
726
} ) ;
728
727
false
729
728
}
@@ -750,7 +749,7 @@ where
750
749
Key : Borrow < KeyQuery > ,
751
750
KeyQuery : ?Sized + Eq + Hash ,
752
751
{
753
- let hash = hash_key ( & self . build_hasher , & key) ;
752
+ let hash = self . build_hasher . hash_one ( key) ;
754
753
raw_entry ( & self . keys , & self . map , hash, key) . is_some ( )
755
754
}
756
755
@@ -770,7 +769,7 @@ where
770
769
/// ```
771
770
#[ must_use]
772
771
pub fn entry ( & mut self , key : Key ) -> Entry < ' _ , Key , Value , State > {
773
- let hash = hash_key ( & self . build_hasher , & key) ;
772
+ let hash = self . build_hasher . hash_one ( & key) ;
774
773
775
774
// TODO: This ugliness arises from borrow checking issues which seems to happen when the vacant entry is created in
776
775
// the match block further below for `Vacant` even though it should be perfectly safe. Is there a better way to do
@@ -820,7 +819,7 @@ where
820
819
Key : Borrow < KeyQuery > ,
821
820
KeyQuery : ?Sized + Eq + Hash ,
822
821
{
823
- let hash = hash_key ( & self . build_hasher , & key) ;
822
+ let hash = self . build_hasher . hash_one ( key) ;
824
823
825
824
match raw_entry ( & self . keys , & self . map , hash, key) {
826
825
Some ( ( _, map_entry) ) => map_entry. length ,
@@ -848,7 +847,7 @@ where
848
847
Key : Borrow < KeyQuery > ,
849
848
KeyQuery : ?Sized + Eq + Hash ,
850
849
{
851
- let hash = hash_key ( & self . build_hasher , & key) ;
850
+ let hash = self . build_hasher . hash_one ( key) ;
852
851
let ( _, map_entry) = raw_entry ( & self . keys , & self . map , hash, key) ?;
853
852
self
854
853
. values
@@ -881,7 +880,7 @@ where
881
880
Key : Borrow < KeyQuery > ,
882
881
KeyQuery : ?Sized + Eq + Hash ,
883
882
{
884
- let hash = hash_key ( & self . build_hasher , & key) ;
883
+ let hash = self . build_hasher . hash_one ( key) ;
885
884
886
885
match raw_entry ( & self . keys , & self . map , hash, key) {
887
886
Some ( ( _, map_entry) ) => EntryValues :: from_map_entry ( & self . values , map_entry) ,
@@ -919,7 +918,7 @@ where
919
918
Key : Borrow < KeyQuery > ,
920
919
KeyQuery : ?Sized + Eq + Hash ,
921
920
{
922
- let hash = hash_key ( & self . build_hasher , & key) ;
921
+ let hash = self . build_hasher . hash_one ( key) ;
923
922
924
923
match raw_entry ( & self . keys , & self . map , hash, key) {
925
924
Some ( ( _, map_entry) ) => EntryValuesMut :: from_map_entry ( & mut self . values , map_entry) ,
@@ -954,7 +953,7 @@ where
954
953
Key : Borrow < KeyQuery > ,
955
954
KeyQuery : ?Sized + Eq + Hash ,
956
955
{
957
- let hash = hash_key ( & self . build_hasher , & key) ;
956
+ let hash = self . build_hasher . hash_one ( key) ;
958
957
let ( _, map_entry) = raw_entry ( & self . keys , & self . map , hash, key) ?;
959
958
self
960
959
. values
@@ -1029,9 +1028,8 @@ where
1029
1028
/// assert_eq!(map.get(&"key"), Some(&"value3"));
1030
1029
/// ```
1031
1030
pub fn insert_all ( & mut self , key : Key , value : Value ) -> EntryValuesDrain < ' _ , Key , Value > {
1032
- let hash = hash_key ( & self . build_hasher , & key) ;
1031
+ let hash = self . build_hasher . hash_one ( & key) ;
1033
1032
let entry = raw_entry_mut ( & self . keys , & mut self . map , hash, & key) ;
1034
- let build_hasher = & self . build_hasher ;
1035
1033
1036
1034
match entry {
1037
1035
RawEntryMut :: Occupied ( mut entry) => {
@@ -1050,7 +1048,7 @@ where
1050
1048
let keys = & self . keys ;
1051
1049
let _ = entry. insert_with_hasher ( hash, key_index, MapEntry :: new ( index) , |& key_index| {
1052
1050
let key = keys. get ( key_index) . unwrap ( ) ;
1053
- hash_key ( build_hasher, key)
1051
+ self . build_hasher . hash_one ( key)
1054
1052
} ) ;
1055
1053
EntryValuesDrain :: empty ( & mut self . values )
1056
1054
}
@@ -1103,7 +1101,6 @@ where
1103
1101
let key_map = self . keys . pack_to ( keys_minimum_capacity) ;
1104
1102
let value_map = self . values . pack_to ( values_minimum_capacity) ;
1105
1103
let mut map = HashMap :: with_capacity_and_hasher ( keys_minimum_capacity, DummyState ) ;
1106
- let build_hasher = & self . build_hasher ;
1107
1104
1108
1105
for value_entry in self . values . iter_mut ( ) {
1109
1106
value_entry. key_index = key_map[ & value_entry. key_index ] ;
@@ -1116,14 +1113,14 @@ where
1116
1113
map_entry. tail_index = value_map[ & map_entry. tail_index ] ;
1117
1114
let key_index = key_map[ & key_index] ;
1118
1115
let key = self . keys . get ( key_index) . unwrap ( ) ;
1119
- let hash = hash_key ( & self . build_hasher , key) ;
1116
+ let hash = self . build_hasher . hash_one ( key) ;
1120
1117
1121
1118
match map. raw_entry_mut ( ) . from_hash ( hash, |_| false ) {
1122
1119
RawEntryMut :: Vacant ( entry) => {
1123
1120
let keys = & self . keys ;
1124
1121
let _ = entry. insert_with_hasher ( hash, key_index, map_entry, |& key_index| {
1125
1122
let key = keys. get ( key_index) . unwrap ( ) ;
1126
- hash_key ( build_hasher, key)
1123
+ self . build_hasher . hash_one ( key)
1127
1124
} ) ;
1128
1125
}
1129
1126
_ => panic ! ( "expected vacant entry" ) ,
@@ -1199,7 +1196,7 @@ where
1199
1196
let key_wrapper = match value_entry. previous_index {
1200
1197
Some ( previous_index) => {
1201
1198
let key = self . keys . get ( value_entry. key_index ) . unwrap ( ) ;
1202
- let hash = hash_key ( & self . build_hasher , & key) ;
1199
+ let hash = self . build_hasher . hash_one ( key) ;
1203
1200
1204
1201
let mut entry = match raw_entry_mut ( & self . keys , & mut self . map , hash, key) {
1205
1202
RawEntryMut :: Occupied ( entry) => entry,
@@ -1216,7 +1213,7 @@ where
1216
1213
}
1217
1214
None => {
1218
1215
let key = self . keys . remove ( value_entry. key_index ) . unwrap ( ) ;
1219
- let hash = hash_key ( & self . build_hasher , & key) ;
1216
+ let hash = self . build_hasher . hash_one ( & key) ;
1220
1217
1221
1218
match raw_entry_mut_empty ( & self . keys , & mut self . map , hash) {
1222
1219
RawEntryMut :: Occupied ( entry) => {
@@ -1268,7 +1265,7 @@ where
1268
1265
let key_wrapper = match value_entry. next_index {
1269
1266
Some ( next_index) => {
1270
1267
let key = self . keys . get ( value_entry. key_index ) . unwrap ( ) ;
1271
- let hash = hash_key ( & self . build_hasher , & key) ;
1268
+ let hash = self . build_hasher . hash_one ( key) ;
1272
1269
1273
1270
let mut entry = match raw_entry_mut ( & self . keys , & mut self . map , hash, key) {
1274
1271
RawEntryMut :: Occupied ( entry) => entry,
@@ -1285,7 +1282,7 @@ where
1285
1282
}
1286
1283
None => {
1287
1284
let key = self . keys . remove ( value_entry. key_index ) . unwrap ( ) ;
1288
- let hash = hash_key ( & self . build_hasher , & key) ;
1285
+ let hash = self . build_hasher . hash_one ( & key) ;
1289
1286
1290
1287
match raw_entry_mut_empty ( & self . keys , & mut self . map , hash) {
1291
1288
RawEntryMut :: Occupied ( entry) => {
@@ -1366,7 +1363,7 @@ where
1366
1363
Key : Borrow < KeyQuery > ,
1367
1364
KeyQuery : ?Sized + Eq + Hash ,
1368
1365
{
1369
- let hash = hash_key ( & self . build_hasher , & key) ;
1366
+ let hash = self . build_hasher . hash_one ( key) ;
1370
1367
let entry = raw_entry_mut ( & self . keys , & mut self . map , hash, key) ;
1371
1368
1372
1369
match entry {
@@ -1452,7 +1449,7 @@ where
1452
1449
Key : Borrow < KeyQuery > ,
1453
1450
KeyQuery : ?Sized + Eq + Hash ,
1454
1451
{
1455
- let hash = hash_key ( & self . build_hasher , & key) ;
1452
+ let hash = self . build_hasher . hash_one ( key) ;
1456
1453
let entry = raw_entry_mut ( & self . keys , & mut self . map , hash, key) ;
1457
1454
1458
1455
match entry {
@@ -1497,7 +1494,7 @@ where
1497
1494
1498
1495
for ( key_index, map_entry) in self . map . drain ( ) {
1499
1496
let key = self . keys . get ( key_index) . unwrap ( ) ;
1500
- let hash = hash_key ( & self . build_hasher , key) ;
1497
+ let hash = self . build_hasher . hash_one ( key) ;
1501
1498
let entry = match raw_entry_mut ( & self . keys , & mut map, hash, key) {
1502
1499
RawEntryMut :: Vacant ( entry) => entry,
1503
1500
_ => panic ! ( "expected vacant entry" ) ,
@@ -1563,7 +1560,7 @@ where
1563
1560
if function ( key, & mut value_entry. value ) {
1564
1561
true
1565
1562
} else {
1566
- let hash = hash_key ( build_hasher, key) ;
1563
+ let hash = build_hasher. hash_one ( key) ;
1567
1564
let mut entry = match raw_entry_mut ( keys, map, hash, key) {
1568
1565
RawEntryMut :: Occupied ( entry) => entry,
1569
1566
_ => panic ! ( "expected occupied entry in internal map" ) ,
@@ -2478,7 +2475,6 @@ where
2478
2475
/// assert_eq!(entry.insert("value"), &"value");
2479
2476
/// ```
2480
2477
pub fn insert ( self , value : Value ) -> & ' map mut Value {
2481
- let build_hasher = self . build_hasher ;
2482
2478
let entry = match raw_entry_mut ( self . keys , self . map , self . hash , & self . key ) {
2483
2479
RawEntryMut :: Vacant ( entry) => entry,
2484
2480
_ => panic ! ( "expected vacant entry" ) ,
@@ -2490,7 +2486,7 @@ where
2490
2486
let keys = & self . keys ;
2491
2487
let _ = entry. insert_with_hasher ( self . hash , key_index, map_entry, |& key_index| {
2492
2488
let key = keys. get ( key_index) . unwrap ( ) ;
2493
- hash_key ( build_hasher, key)
2489
+ self . build_hasher . hash_one ( key)
2494
2490
} ) ;
2495
2491
2496
2492
& mut self . values . get_mut ( index) . unwrap ( ) . value
@@ -2513,7 +2509,6 @@ where
2513
2509
/// assert_eq!(entry.get(), &"value");
2514
2510
/// ```
2515
2511
pub fn insert_entry ( self , value : Value ) -> OccupiedEntry < ' map , Key , Value > {
2516
- let build_hasher = self . build_hasher ;
2517
2512
let entry = match raw_entry_mut ( self . keys , self . map , self . hash , & self . key ) {
2518
2513
RawEntryMut :: Vacant ( entry) => entry,
2519
2514
_ => panic ! ( "expected vacant entry" ) ,
@@ -2525,7 +2520,7 @@ where
2525
2520
let keys = & self . keys ;
2526
2521
let _ = entry. insert_with_hasher ( self . hash , key_index, map_entry, |& key_index| {
2527
2522
let key = keys. get ( key_index) . unwrap ( ) ;
2528
- hash_key ( build_hasher, key)
2523
+ self . build_hasher . hash_one ( key)
2529
2524
} ) ;
2530
2525
2531
2526
let key = self . keys . get ( key_index) . unwrap ( ) ;
@@ -3166,7 +3161,7 @@ where
3166
3161
{
3167
3162
fn next_back ( & mut self ) -> Option < Self :: Item > {
3168
3163
let key = self . iter . next_back ( ) ?;
3169
- let hash = hash_key ( self . build_hasher , key) ;
3164
+ let hash = self . build_hasher . hash_one ( key) ;
3170
3165
let ( _, map_entry) = raw_entry ( self . keys , self . map , hash, key) . unwrap ( ) ;
3171
3166
let iter = EntryValues :: from_map_entry ( self . values , map_entry) ;
3172
3167
Some ( ( key, iter) )
@@ -3196,7 +3191,7 @@ where
3196
3191
3197
3192
fn next ( & mut self ) -> Option < Self :: Item > {
3198
3193
let key = self . iter . next ( ) ?;
3199
- let hash = hash_key ( self . build_hasher , key) ;
3194
+ let hash = self . build_hasher . hash_one ( key) ;
3200
3195
let ( _, map_entry) = raw_entry ( self . keys , self . map , hash, key) . unwrap ( ) ;
3201
3196
let iter = EntryValues :: from_map_entry ( self . values , map_entry) ;
3202
3197
Some ( ( key, iter) )
@@ -3260,7 +3255,7 @@ where
3260
3255
{
3261
3256
fn next_back ( & mut self ) -> Option < Self :: Item > {
3262
3257
let key = self . iter . next_back ( ) ?;
3263
- let hash = hash_key ( self . build_hasher , key) ;
3258
+ let hash = self . build_hasher . hash_one ( key) ;
3264
3259
let ( _, map_entry) = raw_entry ( self . keys , self . map , hash, key) . unwrap ( ) ;
3265
3260
let iter = EntryValuesMut :: from_map_entry ( unsafe { & mut * self . values } , map_entry) ;
3266
3261
Some ( ( key, iter) )
@@ -3290,7 +3285,7 @@ where
3290
3285
3291
3286
fn next ( & mut self ) -> Option < Self :: Item > {
3292
3287
let key = self . iter . next ( ) ?;
3293
- let hash = hash_key ( self . build_hasher , key) ;
3288
+ let hash = self . build_hasher . hash_one ( key) ;
3294
3289
let ( _, map_entry) = raw_entry ( self . keys , self . map , hash, key) . unwrap ( ) ;
3295
3290
let iter = EntryValuesMut :: from_map_entry ( unsafe { & mut * self . values } , map_entry) ;
3296
3291
Some ( ( key, iter) )
@@ -3474,18 +3469,6 @@ impl Hasher for DummyHasher {
3474
3469
}
3475
3470
}
3476
3471
3477
- /// Computes the hash value of the given key.
3478
- #[ must_use]
3479
- fn hash_key < KeyQuery , State > ( state : & State , key : & KeyQuery ) -> u64
3480
- where
3481
- KeyQuery : ?Sized + Eq + Hash ,
3482
- State : BuildHasher ,
3483
- {
3484
- let mut hasher = state. build_hasher ( ) ;
3485
- key. hash ( & mut hasher) ;
3486
- hasher. finish ( )
3487
- }
3488
-
3489
3472
#[ must_use]
3490
3473
fn raw_entry < ' map , Key , KeyQuery , Value , State > (
3491
3474
keys : & VecList < Key > ,
@@ -3587,7 +3570,7 @@ mod test {
3587
3570
let mut map = ListOrderedMultimap :: with_hasher ( TestBuildHasher ) ;
3588
3571
let state = map. hasher ( ) ;
3589
3572
3590
- assert_eq ! ( hash_key ( state, "key1" ) , hash_key ( state, "key2" ) ) ;
3573
+ assert_eq ! ( state. hash_one ( "key1" ) , state. hash_one ( "key2" ) ) ;
3591
3574
3592
3575
map. insert ( "key1" , "value1" ) ;
3593
3576
assert_eq ! ( map. get( & "key1" ) , Some ( & "value1" ) ) ;
@@ -3599,8 +3582,8 @@ mod test {
3599
3582
#[ test]
3600
3583
fn test_no_collision ( ) {
3601
3584
let state = RandomState :: new ( ) ;
3602
- let hash_1 = hash_key ( & state, "key1" ) ;
3603
- let hash_2 = hash_key ( & state, "key2" ) ;
3585
+ let hash_1 = state. hash_one ( "key1" ) ;
3586
+ let hash_2 = state. hash_one ( "key2" ) ;
3604
3587
3605
3588
assert ! ( hash_1 != hash_2) ;
3606
3589
}
0 commit comments