Skip to content

Commit 2f488a0

Browse files
committedFeb 6, 2022
cleanup
1 parent f01fc75 commit 2f488a0

File tree

5 files changed

+33
-41
lines changed

5 files changed

+33
-41
lines changed
 

‎src/iter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ impl<'a, K: Eq + Hash, V, S: 'a + BuildHasher + Clone, M: Map<'a, K, V, S>> Iter
163163
if let Some((k, v)) = current.1.next() {
164164
let guard = current.0.clone();
165165

166-
return Some(RefMulti::new(guard, k, v.get()));
166+
return unsafe { Some(RefMulti::new(guard, k, v.get())) };
167167
}
168168
}
169169

‎src/lib.rs

+18-28
Original file line numberDiff line numberDiff line change
@@ -811,11 +811,10 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
811811

812812
if let Some((kptr, vptr)) = shard.get_key_value(&key) {
813813
unsafe {
814-
let kptr = util::change_lifetime_const(kptr);
814+
let kptr: *const K = kptr;
815+
let vptr: *mut V = vptr.as_ptr();
815816

816-
let vptr = &mut *vptr.as_ptr();
817-
818-
if f(kptr, vptr) {
817+
if f(&*kptr, &mut *vptr) {
819818
shard.remove_entry(key).map(|(k, v)| (k, v.into_inner()))
820819
} else {
821820
None
@@ -847,11 +846,9 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
847846

848847
if let Some((kptr, vptr)) = shard.get_key_value(key) {
849848
unsafe {
850-
let kptr = util::change_lifetime_const(kptr);
851-
852-
let vptr = util::change_lifetime_const(vptr);
853-
854-
Some(Ref::new(shard, kptr, vptr.get()))
849+
let kptr: *const K = kptr;
850+
let vptr: *const V = vptr.get();
851+
Some(Ref::new(shard, kptr, vptr))
855852
}
856853
} else {
857854
None
@@ -871,10 +868,8 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
871868

872869
if let Some((kptr, vptr)) = shard.get_key_value(key) {
873870
unsafe {
874-
let kptr = util::change_lifetime_const(kptr);
875-
876-
let vptr = &mut *vptr.as_ptr();
877-
871+
let kptr: *const K = kptr;
872+
let vptr: *mut V = vptr.as_ptr();
878873
Some(RefMut::new(shard, kptr, vptr))
879874
}
880875
} else {
@@ -898,10 +893,8 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
898893

899894
if let Some((kptr, vptr)) = shard.get_key_value(key) {
900895
unsafe {
901-
let kptr = util::change_lifetime_const(kptr);
902-
903-
let vptr = &mut *vptr.as_ptr();
904-
896+
let kptr: *const K = kptr;
897+
let vptr: *const V = vptr.get();
905898
TryResult::Present(Ref::new(shard, kptr, vptr))
906899
}
907900
} else {
@@ -925,10 +918,8 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
925918

926919
if let Some((kptr, vptr)) = shard.get_key_value(key) {
927920
unsafe {
928-
let kptr = util::change_lifetime_const(kptr);
929-
930-
let vptr = &mut *vptr.as_ptr();
931-
921+
let kptr: *const K = kptr;
922+
let vptr: *mut V = vptr.as_ptr();
932923
TryResult::Present(RefMut::new(shard, kptr, vptr))
933924
}
934925
} else {
@@ -992,12 +983,12 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
992983

993984
if let Some((kptr, vptr)) = shard.get_key_value(&key) {
994985
unsafe {
995-
let kptr = util::change_lifetime_const(kptr);
996-
let vptr = &mut *vptr.as_ptr();
986+
let kptr: *const K = kptr;
987+
let vptr: *mut V = vptr.as_ptr();
997988
Entry::Occupied(OccupiedEntry::new(shard, key, (kptr, vptr)))
998989
}
999990
} else {
1000-
Entry::Vacant(VacantEntry::new(shard, key))
991+
unsafe { Entry::Vacant(VacantEntry::new(shard, key)) }
1001992
}
1002993
}
1003994

@@ -1013,9 +1004,8 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
10131004

10141005
if let Some((kptr, vptr)) = shard.get_key_value(&key) {
10151006
unsafe {
1016-
let kptr = util::change_lifetime_const(kptr);
1017-
1018-
let vptr = &mut *vptr.as_ptr();
1007+
let kptr: *const K = kptr;
1008+
let vptr: *mut V = vptr.as_ptr();
10191009

10201010
Some(Entry::Occupied(OccupiedEntry::new(
10211011
shard,
@@ -1024,7 +1014,7 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
10241014
)))
10251015
}
10261016
} else {
1027-
Some(Entry::Vacant(VacantEntry::new(shard, key)))
1017+
unsafe { Some(Entry::Vacant(VacantEntry::new(shard, key))) }
10281018
}
10291019
}
10301020

‎src/mapref/entry.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ unsafe impl<'a, K: Eq + Hash + Send + Sync, V: Send + Sync, S: BuildHasher> Sync
9797
}
9898

9999
impl<'a, K: Eq + Hash, V, S: BuildHasher> VacantEntry<'a, K, V, S> {
100-
pub(crate) fn new(shard: RwLockWriteGuard<'a, HashMap<K, V, S>>, key: K) -> Self {
100+
pub(crate) unsafe fn new(shard: RwLockWriteGuard<'a, HashMap<K, V, S>>, key: K) -> Self {
101101
Self { shard, key }
102102
}
103103

@@ -144,7 +144,7 @@ unsafe impl<'a, K: Eq + Hash + Send + Sync, V: Send + Sync, S: BuildHasher> Sync
144144
}
145145

146146
impl<'a, K: Eq + Hash, V, S: BuildHasher> OccupiedEntry<'a, K, V, S> {
147-
pub(crate) fn new(
147+
pub(crate) unsafe fn new(
148148
shard: RwLockWriteGuard<'a, HashMap<K, V, S>>,
149149
key: K,
150150
elem: (*const K, *mut V),
@@ -165,7 +165,7 @@ impl<'a, K: Eq + Hash, V, S: BuildHasher> OccupiedEntry<'a, K, V, S> {
165165
}
166166

167167
pub fn into_ref(self) -> RefMut<'a, K, V, S> {
168-
RefMut::new(self.shard, self.elem.0, self.elem.1)
168+
unsafe { RefMut::new(self.shard, self.elem.0, self.elem.1) }
169169
}
170170

171171
pub fn into_key(self) -> K {

‎src/mapref/multiple.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ unsafe impl<'a, K: Eq + Hash + Send + Sync, V: Send + Sync, S: BuildHasher> Sync
2020
}
2121

2222
impl<'a, K: Eq + Hash, V, S: BuildHasher> RefMulti<'a, K, V, S> {
23-
pub(crate) fn new(
23+
pub(crate) unsafe fn new(
2424
guard: Arc<RwLockReadGuard<'a, HashMap<K, V, S>>>,
2525
k: *const K,
2626
v: *const V,
@@ -67,7 +67,7 @@ unsafe impl<'a, K: Eq + Hash + Send + Sync, V: Send + Sync, S: BuildHasher> Sync
6767
}
6868

6969
impl<'a, K: Eq + Hash, V, S: BuildHasher> RefMutMulti<'a, K, V, S> {
70-
pub(crate) fn new(
70+
pub(crate) unsafe fn new(
7171
guard: Arc<RwLockWriteGuard<'a, HashMap<K, V, S>>>,
7272
k: *const K,
7373
v: *mut V,

‎src/mapref/one.rs

+9-7
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ unsafe impl<'a, K: Eq + Hash + Send + Sync, V: Send + Sync, S: BuildHasher> Sync
1818
}
1919

2020
impl<'a, K: Eq + Hash, V, S: BuildHasher> Ref<'a, K, V, S> {
21-
pub(crate) fn new(
21+
pub(crate) unsafe fn new(
2222
guard: RwLockReadGuard<'a, HashMap<K, V, S>>,
2323
k: *const K,
2424
v: *const V,
@@ -65,7 +65,7 @@ unsafe impl<'a, K: Eq + Hash + Send + Sync, V: Send + Sync, S: BuildHasher> Sync
6565
}
6666

6767
impl<'a, K: Eq + Hash, V, S: BuildHasher> RefMut<'a, K, V, S> {
68-
pub(crate) fn new(
68+
pub(crate) unsafe fn new(
6969
guard: RwLockWriteGuard<'a, HashMap<K, V, S>>,
7070
k: *const K,
7171
v: *mut V,
@@ -94,11 +94,13 @@ impl<'a, K: Eq + Hash, V, S: BuildHasher> RefMut<'a, K, V, S> {
9494
}
9595

9696
pub fn downgrade(self) -> Ref<'a, K, V, S> {
97-
Ref::new(
98-
parking_lot::RwLockWriteGuard::downgrade(self.guard),
99-
self.k,
100-
self.v,
101-
)
97+
unsafe {
98+
Ref::new(
99+
parking_lot::RwLockWriteGuard::downgrade(self.guard),
100+
self.k,
101+
self.v,
102+
)
103+
}
102104
}
103105
}
104106

0 commit comments

Comments
 (0)
Please sign in to comment.