Skip to content

Commit 1c892ca

Browse files
committed
Revert "Revert "Fix lint""
This reverts commit 07ade95.
1 parent 22e999f commit 1c892ca

File tree

1 file changed

+30
-47
lines changed

1 file changed

+30
-47
lines changed

src/list_ordered_multimap.rs

Lines changed: 30 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -697,9 +697,8 @@ where
697697
/// assert_eq!(map.values_len(), 2);
698698
/// ```
699699
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);
701701
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, &key);
702-
let build_hasher = &self.build_hasher;
703702

704703
match entry {
705704
RawEntryMut::Occupied(mut entry) => {
@@ -723,7 +722,7 @@ where
723722
let keys = &self.keys;
724723
let _ = entry.insert_with_hasher(hash, key_index, MapEntry::new(index), |&key_index| {
725724
let key = keys.get(key_index).unwrap();
726-
hash_key(build_hasher, key)
725+
self.build_hasher.hash_one(key)
727726
});
728727
false
729728
}
@@ -750,7 +749,7 @@ where
750749
Key: Borrow<KeyQuery>,
751750
KeyQuery: ?Sized + Eq + Hash,
752751
{
753-
let hash = hash_key(&self.build_hasher, &key);
752+
let hash = self.build_hasher.hash_one(key);
754753
raw_entry(&self.keys, &self.map, hash, key).is_some()
755754
}
756755

@@ -770,7 +769,7 @@ where
770769
/// ```
771770
#[must_use]
772771
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);
774773

775774
// TODO: This ugliness arises from borrow checking issues which seems to happen when the vacant entry is created in
776775
// 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
820819
Key: Borrow<KeyQuery>,
821820
KeyQuery: ?Sized + Eq + Hash,
822821
{
823-
let hash = hash_key(&self.build_hasher, &key);
822+
let hash = self.build_hasher.hash_one(key);
824823

825824
match raw_entry(&self.keys, &self.map, hash, key) {
826825
Some((_, map_entry)) => map_entry.length,
@@ -848,7 +847,7 @@ where
848847
Key: Borrow<KeyQuery>,
849848
KeyQuery: ?Sized + Eq + Hash,
850849
{
851-
let hash = hash_key(&self.build_hasher, &key);
850+
let hash = self.build_hasher.hash_one(key);
852851
let (_, map_entry) = raw_entry(&self.keys, &self.map, hash, key)?;
853852
self
854853
.values
@@ -881,7 +880,7 @@ where
881880
Key: Borrow<KeyQuery>,
882881
KeyQuery: ?Sized + Eq + Hash,
883882
{
884-
let hash = hash_key(&self.build_hasher, &key);
883+
let hash = self.build_hasher.hash_one(key);
885884

886885
match raw_entry(&self.keys, &self.map, hash, key) {
887886
Some((_, map_entry)) => EntryValues::from_map_entry(&self.values, map_entry),
@@ -919,7 +918,7 @@ where
919918
Key: Borrow<KeyQuery>,
920919
KeyQuery: ?Sized + Eq + Hash,
921920
{
922-
let hash = hash_key(&self.build_hasher, &key);
921+
let hash = self.build_hasher.hash_one(key);
923922

924923
match raw_entry(&self.keys, &self.map, hash, key) {
925924
Some((_, map_entry)) => EntryValuesMut::from_map_entry(&mut self.values, map_entry),
@@ -954,7 +953,7 @@ where
954953
Key: Borrow<KeyQuery>,
955954
KeyQuery: ?Sized + Eq + Hash,
956955
{
957-
let hash = hash_key(&self.build_hasher, &key);
956+
let hash = self.build_hasher.hash_one(key);
958957
let (_, map_entry) = raw_entry(&self.keys, &self.map, hash, key)?;
959958
self
960959
.values
@@ -1029,9 +1028,8 @@ where
10291028
/// assert_eq!(map.get(&"key"), Some(&"value3"));
10301029
/// ```
10311030
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);
10331032
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, &key);
1034-
let build_hasher = &self.build_hasher;
10351033

10361034
match entry {
10371035
RawEntryMut::Occupied(mut entry) => {
@@ -1050,7 +1048,7 @@ where
10501048
let keys = &self.keys;
10511049
let _ = entry.insert_with_hasher(hash, key_index, MapEntry::new(index), |&key_index| {
10521050
let key = keys.get(key_index).unwrap();
1053-
hash_key(build_hasher, key)
1051+
self.build_hasher.hash_one(key)
10541052
});
10551053
EntryValuesDrain::empty(&mut self.values)
10561054
}
@@ -1103,7 +1101,6 @@ where
11031101
let key_map = self.keys.pack_to(keys_minimum_capacity);
11041102
let value_map = self.values.pack_to(values_minimum_capacity);
11051103
let mut map = HashMap::with_capacity_and_hasher(keys_minimum_capacity, DummyState);
1106-
let build_hasher = &self.build_hasher;
11071104

11081105
for value_entry in self.values.iter_mut() {
11091106
value_entry.key_index = key_map[&value_entry.key_index];
@@ -1116,14 +1113,14 @@ where
11161113
map_entry.tail_index = value_map[&map_entry.tail_index];
11171114
let key_index = key_map[&key_index];
11181115
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);
11201117

11211118
match map.raw_entry_mut().from_hash(hash, |_| false) {
11221119
RawEntryMut::Vacant(entry) => {
11231120
let keys = &self.keys;
11241121
let _ = entry.insert_with_hasher(hash, key_index, map_entry, |&key_index| {
11251122
let key = keys.get(key_index).unwrap();
1126-
hash_key(build_hasher, key)
1123+
self.build_hasher.hash_one(key)
11271124
});
11281125
}
11291126
_ => panic!("expected vacant entry"),
@@ -1199,7 +1196,7 @@ where
11991196
let key_wrapper = match value_entry.previous_index {
12001197
Some(previous_index) => {
12011198
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);
12031200

12041201
let mut entry = match raw_entry_mut(&self.keys, &mut self.map, hash, key) {
12051202
RawEntryMut::Occupied(entry) => entry,
@@ -1216,7 +1213,7 @@ where
12161213
}
12171214
None => {
12181215
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);
12201217

12211218
match raw_entry_mut_empty(&self.keys, &mut self.map, hash) {
12221219
RawEntryMut::Occupied(entry) => {
@@ -1268,7 +1265,7 @@ where
12681265
let key_wrapper = match value_entry.next_index {
12691266
Some(next_index) => {
12701267
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);
12721269

12731270
let mut entry = match raw_entry_mut(&self.keys, &mut self.map, hash, key) {
12741271
RawEntryMut::Occupied(entry) => entry,
@@ -1285,7 +1282,7 @@ where
12851282
}
12861283
None => {
12871284
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);
12891286

12901287
match raw_entry_mut_empty(&self.keys, &mut self.map, hash) {
12911288
RawEntryMut::Occupied(entry) => {
@@ -1366,7 +1363,7 @@ where
13661363
Key: Borrow<KeyQuery>,
13671364
KeyQuery: ?Sized + Eq + Hash,
13681365
{
1369-
let hash = hash_key(&self.build_hasher, &key);
1366+
let hash = self.build_hasher.hash_one(key);
13701367
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, key);
13711368

13721369
match entry {
@@ -1452,7 +1449,7 @@ where
14521449
Key: Borrow<KeyQuery>,
14531450
KeyQuery: ?Sized + Eq + Hash,
14541451
{
1455-
let hash = hash_key(&self.build_hasher, &key);
1452+
let hash = self.build_hasher.hash_one(key);
14561453
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, key);
14571454

14581455
match entry {
@@ -1497,7 +1494,7 @@ where
14971494

14981495
for (key_index, map_entry) in self.map.drain() {
14991496
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);
15011498
let entry = match raw_entry_mut(&self.keys, &mut map, hash, key) {
15021499
RawEntryMut::Vacant(entry) => entry,
15031500
_ => panic!("expected vacant entry"),
@@ -1563,7 +1560,7 @@ where
15631560
if function(key, &mut value_entry.value) {
15641561
true
15651562
} else {
1566-
let hash = hash_key(build_hasher, key);
1563+
let hash = build_hasher.hash_one(key);
15671564
let mut entry = match raw_entry_mut(keys, map, hash, key) {
15681565
RawEntryMut::Occupied(entry) => entry,
15691566
_ => panic!("expected occupied entry in internal map"),
@@ -2478,7 +2475,6 @@ where
24782475
/// assert_eq!(entry.insert("value"), &"value");
24792476
/// ```
24802477
pub fn insert(self, value: Value) -> &'map mut Value {
2481-
let build_hasher = self.build_hasher;
24822478
let entry = match raw_entry_mut(self.keys, self.map, self.hash, &self.key) {
24832479
RawEntryMut::Vacant(entry) => entry,
24842480
_ => panic!("expected vacant entry"),
@@ -2490,7 +2486,7 @@ where
24902486
let keys = &self.keys;
24912487
let _ = entry.insert_with_hasher(self.hash, key_index, map_entry, |&key_index| {
24922488
let key = keys.get(key_index).unwrap();
2493-
hash_key(build_hasher, key)
2489+
self.build_hasher.hash_one(key)
24942490
});
24952491

24962492
&mut self.values.get_mut(index).unwrap().value
@@ -2513,7 +2509,6 @@ where
25132509
/// assert_eq!(entry.get(), &"value");
25142510
/// ```
25152511
pub fn insert_entry(self, value: Value) -> OccupiedEntry<'map, Key, Value> {
2516-
let build_hasher = self.build_hasher;
25172512
let entry = match raw_entry_mut(self.keys, self.map, self.hash, &self.key) {
25182513
RawEntryMut::Vacant(entry) => entry,
25192514
_ => panic!("expected vacant entry"),
@@ -2525,7 +2520,7 @@ where
25252520
let keys = &self.keys;
25262521
let _ = entry.insert_with_hasher(self.hash, key_index, map_entry, |&key_index| {
25272522
let key = keys.get(key_index).unwrap();
2528-
hash_key(build_hasher, key)
2523+
self.build_hasher.hash_one(key)
25292524
});
25302525

25312526
let key = self.keys.get(key_index).unwrap();
@@ -3166,7 +3161,7 @@ where
31663161
{
31673162
fn next_back(&mut self) -> Option<Self::Item> {
31683163
let key = self.iter.next_back()?;
3169-
let hash = hash_key(self.build_hasher, key);
3164+
let hash = self.build_hasher.hash_one(key);
31703165
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
31713166
let iter = EntryValues::from_map_entry(self.values, map_entry);
31723167
Some((key, iter))
@@ -3196,7 +3191,7 @@ where
31963191

31973192
fn next(&mut self) -> Option<Self::Item> {
31983193
let key = self.iter.next()?;
3199-
let hash = hash_key(self.build_hasher, key);
3194+
let hash = self.build_hasher.hash_one(key);
32003195
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
32013196
let iter = EntryValues::from_map_entry(self.values, map_entry);
32023197
Some((key, iter))
@@ -3260,7 +3255,7 @@ where
32603255
{
32613256
fn next_back(&mut self) -> Option<Self::Item> {
32623257
let key = self.iter.next_back()?;
3263-
let hash = hash_key(self.build_hasher, key);
3258+
let hash = self.build_hasher.hash_one(key);
32643259
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
32653260
let iter = EntryValuesMut::from_map_entry(unsafe { &mut *self.values }, map_entry);
32663261
Some((key, iter))
@@ -3290,7 +3285,7 @@ where
32903285

32913286
fn next(&mut self) -> Option<Self::Item> {
32923287
let key = self.iter.next()?;
3293-
let hash = hash_key(self.build_hasher, key);
3288+
let hash = self.build_hasher.hash_one(key);
32943289
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
32953290
let iter = EntryValuesMut::from_map_entry(unsafe { &mut *self.values }, map_entry);
32963291
Some((key, iter))
@@ -3474,18 +3469,6 @@ impl Hasher for DummyHasher {
34743469
}
34753470
}
34763471

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-
34893472
#[must_use]
34903473
fn raw_entry<'map, Key, KeyQuery, Value, State>(
34913474
keys: &VecList<Key>,
@@ -3587,7 +3570,7 @@ mod test {
35873570
let mut map = ListOrderedMultimap::with_hasher(TestBuildHasher);
35883571
let state = map.hasher();
35893572

3590-
assert_eq!(hash_key(state, "key1"), hash_key(state, "key2"));
3573+
assert_eq!(state.hash_one("key1"), state.hash_one("key2"));
35913574

35923575
map.insert("key1", "value1");
35933576
assert_eq!(map.get(&"key1"), Some(&"value1"));
@@ -3599,8 +3582,8 @@ mod test {
35993582
#[test]
36003583
fn test_no_collision() {
36013584
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");
36043587

36053588
assert!(hash_1 != hash_2);
36063589
}

0 commit comments

Comments
 (0)