Skip to content

Commit 07ade95

Browse files
committed
Revert "Fix lint"
This reverts commit a81c05c.
1 parent 1b0ddbd commit 07ade95

File tree

1 file changed

+47
-30
lines changed

1 file changed

+47
-30
lines changed

src/list_ordered_multimap.rs

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -697,8 +697,9 @@ where
697697
/// assert_eq!(map.values_len(), 2);
698698
/// ```
699699
pub fn append(&mut self, key: Key, value: Value) -> bool {
700-
let hash = self.build_hasher.hash_one(&key);
700+
let hash = hash_key(&self.build_hasher, &key);
701701
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, &key);
702+
let build_hasher = &self.build_hasher;
702703

703704
match entry {
704705
RawEntryMut::Occupied(mut entry) => {
@@ -722,7 +723,7 @@ where
722723
let keys = &self.keys;
723724
let _ = entry.insert_with_hasher(hash, key_index, MapEntry::new(index), |&key_index| {
724725
let key = keys.get(key_index).unwrap();
725-
self.build_hasher.hash_one(key)
726+
hash_key(build_hasher, key)
726727
});
727728
false
728729
}
@@ -749,7 +750,7 @@ where
749750
Key: Borrow<KeyQuery>,
750751
KeyQuery: ?Sized + Eq + Hash,
751752
{
752-
let hash = self.build_hasher.hash_one(key);
753+
let hash = hash_key(&self.build_hasher, &key);
753754
raw_entry(&self.keys, &self.map, hash, key).is_some()
754755
}
755756

@@ -769,7 +770,7 @@ where
769770
/// ```
770771
#[must_use]
771772
pub fn entry(&mut self, key: Key) -> Entry<'_, Key, Value, State> {
772-
let hash = self.build_hasher.hash_one(&key);
773+
let hash = hash_key(&self.build_hasher, &key);
773774

774775
// TODO: This ugliness arises from borrow checking issues which seems to happen when the vacant entry is created in
775776
// the match block further below for `Vacant` even though it should be perfectly safe. Is there a better way to do
@@ -819,7 +820,7 @@ where
819820
Key: Borrow<KeyQuery>,
820821
KeyQuery: ?Sized + Eq + Hash,
821822
{
822-
let hash = self.build_hasher.hash_one(key);
823+
let hash = hash_key(&self.build_hasher, &key);
823824

824825
match raw_entry(&self.keys, &self.map, hash, key) {
825826
Some((_, map_entry)) => map_entry.length,
@@ -847,7 +848,7 @@ where
847848
Key: Borrow<KeyQuery>,
848849
KeyQuery: ?Sized + Eq + Hash,
849850
{
850-
let hash = self.build_hasher.hash_one(key);
851+
let hash = hash_key(&self.build_hasher, &key);
851852
let (_, map_entry) = raw_entry(&self.keys, &self.map, hash, key)?;
852853
self
853854
.values
@@ -880,7 +881,7 @@ where
880881
Key: Borrow<KeyQuery>,
881882
KeyQuery: ?Sized + Eq + Hash,
882883
{
883-
let hash = self.build_hasher.hash_one(key);
884+
let hash = hash_key(&self.build_hasher, &key);
884885

885886
match raw_entry(&self.keys, &self.map, hash, key) {
886887
Some((_, map_entry)) => EntryValues::from_map_entry(&self.values, map_entry),
@@ -918,7 +919,7 @@ where
918919
Key: Borrow<KeyQuery>,
919920
KeyQuery: ?Sized + Eq + Hash,
920921
{
921-
let hash = self.build_hasher.hash_one(key);
922+
let hash = hash_key(&self.build_hasher, &key);
922923

923924
match raw_entry(&self.keys, &self.map, hash, key) {
924925
Some((_, map_entry)) => EntryValuesMut::from_map_entry(&mut self.values, map_entry),
@@ -953,7 +954,7 @@ where
953954
Key: Borrow<KeyQuery>,
954955
KeyQuery: ?Sized + Eq + Hash,
955956
{
956-
let hash = self.build_hasher.hash_one(key);
957+
let hash = hash_key(&self.build_hasher, &key);
957958
let (_, map_entry) = raw_entry(&self.keys, &self.map, hash, key)?;
958959
self
959960
.values
@@ -1028,8 +1029,9 @@ where
10281029
/// assert_eq!(map.get(&"key"), Some(&"value3"));
10291030
/// ```
10301031
pub fn insert_all(&mut self, key: Key, value: Value) -> EntryValuesDrain<'_, Key, Value> {
1031-
let hash = self.build_hasher.hash_one(&key);
1032+
let hash = hash_key(&self.build_hasher, &key);
10321033
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, &key);
1034+
let build_hasher = &self.build_hasher;
10331035

10341036
match entry {
10351037
RawEntryMut::Occupied(mut entry) => {
@@ -1048,7 +1050,7 @@ where
10481050
let keys = &self.keys;
10491051
let _ = entry.insert_with_hasher(hash, key_index, MapEntry::new(index), |&key_index| {
10501052
let key = keys.get(key_index).unwrap();
1051-
self.build_hasher.hash_one(key)
1053+
hash_key(build_hasher, key)
10521054
});
10531055
EntryValuesDrain::empty(&mut self.values)
10541056
}
@@ -1101,6 +1103,7 @@ where
11011103
let key_map = self.keys.pack_to(keys_minimum_capacity);
11021104
let value_map = self.values.pack_to(values_minimum_capacity);
11031105
let mut map = HashMap::with_capacity_and_hasher(keys_minimum_capacity, DummyState);
1106+
let build_hasher = &self.build_hasher;
11041107

11051108
for value_entry in self.values.iter_mut() {
11061109
value_entry.key_index = key_map[&value_entry.key_index];
@@ -1113,14 +1116,14 @@ where
11131116
map_entry.tail_index = value_map[&map_entry.tail_index];
11141117
let key_index = key_map[&key_index];
11151118
let key = self.keys.get(key_index).unwrap();
1116-
let hash = self.build_hasher.hash_one(key);
1119+
let hash = hash_key(&self.build_hasher, key);
11171120

11181121
match map.raw_entry_mut().from_hash(hash, |_| false) {
11191122
RawEntryMut::Vacant(entry) => {
11201123
let keys = &self.keys;
11211124
let _ = entry.insert_with_hasher(hash, key_index, map_entry, |&key_index| {
11221125
let key = keys.get(key_index).unwrap();
1123-
self.build_hasher.hash_one(key)
1126+
hash_key(build_hasher, key)
11241127
});
11251128
}
11261129
_ => panic!("expected vacant entry"),
@@ -1196,7 +1199,7 @@ where
11961199
let key_wrapper = match value_entry.previous_index {
11971200
Some(previous_index) => {
11981201
let key = self.keys.get(value_entry.key_index).unwrap();
1199-
let hash = self.build_hasher.hash_one(key);
1202+
let hash = hash_key(&self.build_hasher, &key);
12001203

12011204
let mut entry = match raw_entry_mut(&self.keys, &mut self.map, hash, key) {
12021205
RawEntryMut::Occupied(entry) => entry,
@@ -1213,7 +1216,7 @@ where
12131216
}
12141217
None => {
12151218
let key = self.keys.remove(value_entry.key_index).unwrap();
1216-
let hash = self.build_hasher.hash_one(&key);
1219+
let hash = hash_key(&self.build_hasher, &key);
12171220

12181221
match raw_entry_mut_empty(&self.keys, &mut self.map, hash) {
12191222
RawEntryMut::Occupied(entry) => {
@@ -1265,7 +1268,7 @@ where
12651268
let key_wrapper = match value_entry.next_index {
12661269
Some(next_index) => {
12671270
let key = self.keys.get(value_entry.key_index).unwrap();
1268-
let hash = self.build_hasher.hash_one(key);
1271+
let hash = hash_key(&self.build_hasher, &key);
12691272

12701273
let mut entry = match raw_entry_mut(&self.keys, &mut self.map, hash, key) {
12711274
RawEntryMut::Occupied(entry) => entry,
@@ -1282,7 +1285,7 @@ where
12821285
}
12831286
None => {
12841287
let key = self.keys.remove(value_entry.key_index).unwrap();
1285-
let hash = self.build_hasher.hash_one(&key);
1288+
let hash = hash_key(&self.build_hasher, &key);
12861289

12871290
match raw_entry_mut_empty(&self.keys, &mut self.map, hash) {
12881291
RawEntryMut::Occupied(entry) => {
@@ -1363,7 +1366,7 @@ where
13631366
Key: Borrow<KeyQuery>,
13641367
KeyQuery: ?Sized + Eq + Hash,
13651368
{
1366-
let hash = self.build_hasher.hash_one(key);
1369+
let hash = hash_key(&self.build_hasher, &key);
13671370
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, key);
13681371

13691372
match entry {
@@ -1449,7 +1452,7 @@ where
14491452
Key: Borrow<KeyQuery>,
14501453
KeyQuery: ?Sized + Eq + Hash,
14511454
{
1452-
let hash = self.build_hasher.hash_one(key);
1455+
let hash = hash_key(&self.build_hasher, &key);
14531456
let entry = raw_entry_mut(&self.keys, &mut self.map, hash, key);
14541457

14551458
match entry {
@@ -1494,7 +1497,7 @@ where
14941497

14951498
for (key_index, map_entry) in self.map.drain() {
14961499
let key = self.keys.get(key_index).unwrap();
1497-
let hash = self.build_hasher.hash_one(key);
1500+
let hash = hash_key(&self.build_hasher, key);
14981501
let entry = match raw_entry_mut(&self.keys, &mut map, hash, key) {
14991502
RawEntryMut::Vacant(entry) => entry,
15001503
_ => panic!("expected vacant entry"),
@@ -1560,7 +1563,7 @@ where
15601563
if function(key, &mut value_entry.value) {
15611564
true
15621565
} else {
1563-
let hash = build_hasher.hash_one(key);
1566+
let hash = hash_key(build_hasher, key);
15641567
let mut entry = match raw_entry_mut(keys, map, hash, key) {
15651568
RawEntryMut::Occupied(entry) => entry,
15661569
_ => panic!("expected occupied entry in internal map"),
@@ -2475,6 +2478,7 @@ where
24752478
/// assert_eq!(entry.insert("value"), &"value");
24762479
/// ```
24772480
pub fn insert(self, value: Value) -> &'map mut Value {
2481+
let build_hasher = self.build_hasher;
24782482
let entry = match raw_entry_mut(self.keys, self.map, self.hash, &self.key) {
24792483
RawEntryMut::Vacant(entry) => entry,
24802484
_ => panic!("expected vacant entry"),
@@ -2486,7 +2490,7 @@ where
24862490
let keys = &self.keys;
24872491
let _ = entry.insert_with_hasher(self.hash, key_index, map_entry, |&key_index| {
24882492
let key = keys.get(key_index).unwrap();
2489-
self.build_hasher.hash_one(key)
2493+
hash_key(build_hasher, key)
24902494
});
24912495

24922496
&mut self.values.get_mut(index).unwrap().value
@@ -2509,6 +2513,7 @@ where
25092513
/// assert_eq!(entry.get(), &"value");
25102514
/// ```
25112515
pub fn insert_entry(self, value: Value) -> OccupiedEntry<'map, Key, Value> {
2516+
let build_hasher = self.build_hasher;
25122517
let entry = match raw_entry_mut(self.keys, self.map, self.hash, &self.key) {
25132518
RawEntryMut::Vacant(entry) => entry,
25142519
_ => panic!("expected vacant entry"),
@@ -2520,7 +2525,7 @@ where
25202525
let keys = &self.keys;
25212526
let _ = entry.insert_with_hasher(self.hash, key_index, map_entry, |&key_index| {
25222527
let key = keys.get(key_index).unwrap();
2523-
self.build_hasher.hash_one(key)
2528+
hash_key(build_hasher, key)
25242529
});
25252530

25262531
let key = self.keys.get(key_index).unwrap();
@@ -3161,7 +3166,7 @@ where
31613166
{
31623167
fn next_back(&mut self) -> Option<Self::Item> {
31633168
let key = self.iter.next_back()?;
3164-
let hash = self.build_hasher.hash_one(key);
3169+
let hash = hash_key(self.build_hasher, key);
31653170
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
31663171
let iter = EntryValues::from_map_entry(self.values, map_entry);
31673172
Some((key, iter))
@@ -3191,7 +3196,7 @@ where
31913196

31923197
fn next(&mut self) -> Option<Self::Item> {
31933198
let key = self.iter.next()?;
3194-
let hash = self.build_hasher.hash_one(key);
3199+
let hash = hash_key(self.build_hasher, key);
31953200
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
31963201
let iter = EntryValues::from_map_entry(self.values, map_entry);
31973202
Some((key, iter))
@@ -3255,7 +3260,7 @@ where
32553260
{
32563261
fn next_back(&mut self) -> Option<Self::Item> {
32573262
let key = self.iter.next_back()?;
3258-
let hash = self.build_hasher.hash_one(key);
3263+
let hash = hash_key(self.build_hasher, key);
32593264
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
32603265
let iter = EntryValuesMut::from_map_entry(unsafe { &mut *self.values }, map_entry);
32613266
Some((key, iter))
@@ -3285,7 +3290,7 @@ where
32853290

32863291
fn next(&mut self) -> Option<Self::Item> {
32873292
let key = self.iter.next()?;
3288-
let hash = self.build_hasher.hash_one(key);
3293+
let hash = hash_key(self.build_hasher, key);
32893294
let (_, map_entry) = raw_entry(self.keys, self.map, hash, key).unwrap();
32903295
let iter = EntryValuesMut::from_map_entry(unsafe { &mut *self.values }, map_entry);
32913296
Some((key, iter))
@@ -3469,6 +3474,18 @@ impl Hasher for DummyHasher {
34693474
}
34703475
}
34713476

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+
34723489
#[must_use]
34733490
fn raw_entry<'map, Key, KeyQuery, Value, State>(
34743491
keys: &VecList<Key>,
@@ -3570,7 +3587,7 @@ mod test {
35703587
let mut map = ListOrderedMultimap::with_hasher(TestBuildHasher);
35713588
let state = map.hasher();
35723589

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

35753592
map.insert("key1", "value1");
35763593
assert_eq!(map.get(&"key1"), Some(&"value1"));
@@ -3582,8 +3599,8 @@ mod test {
35823599
#[test]
35833600
fn test_no_collision() {
35843601
let state = RandomState::new();
3585-
let hash_1 = state.hash_one("key1");
3586-
let hash_2 = state.hash_one("key2");
3602+
let hash_1 = hash_key(&state, "key1");
3603+
let hash_2 = hash_key(&state, "key2");
35873604

35883605
assert!(hash_1 != hash_2);
35893606
}

0 commit comments

Comments
 (0)