Skip to content

Commit a0df3a1

Browse files
committed
fix send/sync bounds via GuardSend and auto traits
1 parent 613b6b7 commit a0df3a1

File tree

6 files changed

+1
-101
lines changed

6 files changed

+1
-101
lines changed

src/iter.rs

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -69,22 +69,6 @@ impl<K: Eq + Hash, V, S: BuildHasher + Clone> Iterator for OwningIter<K, V, S> {
6969
}
7070
}
7171

72-
unsafe impl<K, V, S> Send for OwningIter<K, V, S>
73-
where
74-
K: Eq + Hash + Send,
75-
V: Send,
76-
S: BuildHasher + Clone + Send,
77-
{
78-
}
79-
80-
unsafe impl<K, V, S> Sync for OwningIter<K, V, S>
81-
where
82-
K: Eq + Hash + Sync,
83-
V: Sync,
84-
S: BuildHasher + Clone + Sync,
85-
{
86-
}
87-
8872
type GuardIter<'a, K, V> = (
8973
Arc<RwLockReadGuardDetached<'a>>,
9074
hashbrown::raw::RawIter<(K, V)>,
@@ -119,24 +103,6 @@ impl<'i, K: Clone + Hash + Eq, V: Clone, S: Clone + BuildHasher> Clone for Iter<
119103
}
120104
}
121105

122-
unsafe impl<'a, 'i, K, V, S, M> Send for Iter<'i, K, V, S, M>
123-
where
124-
K: 'a + Eq + Hash + Send,
125-
V: 'a + Send,
126-
S: 'a + BuildHasher + Clone,
127-
M: Map<'a, K, V, S>,
128-
{
129-
}
130-
131-
unsafe impl<'a, 'i, K, V, S, M> Sync for Iter<'i, K, V, S, M>
132-
where
133-
K: 'a + Eq + Hash + Sync,
134-
V: 'a + Sync,
135-
S: 'a + BuildHasher + Clone,
136-
M: Map<'a, K, V, S>,
137-
{
138-
}
139-
140106
impl<'a, K: Eq + Hash + 'a, V: 'a, S: 'a + BuildHasher + Clone, M: Map<'a, K, V, S>>
141107
Iter<'a, K, V, S, M>
142108
{
@@ -204,24 +170,6 @@ pub struct IterMut<'a, K, V, S = RandomState, M = DashMap<K, V, S>> {
204170
marker: PhantomData<S>,
205171
}
206172

207-
unsafe impl<'a, 'i, K, V, S, M> Send for IterMut<'i, K, V, S, M>
208-
where
209-
K: 'a + Eq + Hash + Send,
210-
V: 'a + Send,
211-
S: 'a + BuildHasher + Clone,
212-
M: Map<'a, K, V, S>,
213-
{
214-
}
215-
216-
unsafe impl<'a, 'i, K, V, S, M> Sync for IterMut<'i, K, V, S, M>
217-
where
218-
K: 'a + Eq + Hash + Sync,
219-
V: 'a + Sync,
220-
S: 'a + BuildHasher + Clone,
221-
M: Map<'a, K, V, S>,
222-
{
223-
}
224-
225173
impl<'a, K: Eq + Hash + 'a, V: 'a, S: 'a + BuildHasher + Clone, M: Map<'a, K, V, S>>
226174
IterMut<'a, K, V, S, M>
227175
{

src/iter_set.rs

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,40 +20,10 @@ impl<K: Eq + Hash, S: BuildHasher + Clone> Iterator for OwningIter<K, S> {
2020
}
2121
}
2222

23-
unsafe impl<K, S> Send for OwningIter<K, S>
24-
where
25-
K: Eq + Hash + Send,
26-
S: BuildHasher + Clone + Send,
27-
{
28-
}
29-
30-
unsafe impl<K, S> Sync for OwningIter<K, S>
31-
where
32-
K: Eq + Hash + Sync,
33-
S: BuildHasher + Clone + Sync,
34-
{
35-
}
36-
3723
pub struct Iter<'a, K, S, M> {
3824
inner: crate::iter::Iter<'a, K, (), S, M>,
3925
}
4026

41-
unsafe impl<'a, 'i, K, S, M> Send for Iter<'i, K, S, M>
42-
where
43-
K: 'a + Eq + Hash + Send,
44-
S: 'a + BuildHasher + Clone,
45-
M: Map<'a, K, (), S>,
46-
{
47-
}
48-
49-
unsafe impl<'a, 'i, K, S, M> Sync for Iter<'i, K, S, M>
50-
where
51-
K: 'a + Eq + Hash + Sync,
52-
S: 'a + BuildHasher + Clone,
53-
M: Map<'a, K, (), S>,
54-
{
55-
}
56-
5727
impl<'a, K: Eq + Hash + 'a, S: 'a + BuildHasher + Clone, M: Map<'a, K, (), S>> Iter<'a, K, S, M> {
5828
pub(crate) fn new(inner: crate::iter::Iter<'a, K, (), S, M>) -> Self {
5929
Self { inner }

src/lock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ unsafe impl lock_api::RawRwLock for RawRwLock {
2222
state: AtomicUsize::new(0),
2323
};
2424

25-
type GuardMarker = lock_api::GuardNoSend;
25+
type GuardMarker = lock_api::GuardSend;
2626

2727
#[inline]
2828
fn try_lock_exclusive(&self) -> bool {

src/mapref/entry.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,6 @@ pub struct VacantEntry<'a, K, V> {
118118
slot: hashbrown::raw::InsertSlot,
119119
}
120120

121-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Send for VacantEntry<'a, K, V> {}
122-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Sync for VacantEntry<'a, K, V> {}
123-
124121
impl<'a, K: Eq + Hash, V> VacantEntry<'a, K, V> {
125122
pub(crate) unsafe fn new(
126123
shard: RwLockWriteGuardDetached<'a>,
@@ -180,9 +177,6 @@ pub struct OccupiedEntry<'a, K, V> {
180177
key: K,
181178
}
182179

183-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Send for OccupiedEntry<'a, K, V> {}
184-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Sync for OccupiedEntry<'a, K, V> {}
185-
186180
impl<'a, K: Eq + Hash, V> OccupiedEntry<'a, K, V> {
187181
pub(crate) unsafe fn new(
188182
shard: RwLockWriteGuardDetached<'a>,

src/mapref/multiple.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ pub struct RefMulti<'a, K, V> {
99
v: &'a V,
1010
}
1111

12-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Send for RefMulti<'a, K, V> {}
13-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Sync for RefMulti<'a, K, V> {}
14-
1512
impl<'a, K: Eq + Hash, V> RefMulti<'a, K, V> {
1613
pub(crate) unsafe fn new(guard: Arc<RwLockReadGuardDetached<'a>>, k: &'a K, v: &'a V) -> Self {
1714
Self {
@@ -48,9 +45,6 @@ pub struct RefMutMulti<'a, K, V> {
4845
v: &'a mut V,
4946
}
5047

51-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Send for RefMutMulti<'a, K, V> {}
52-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Sync for RefMutMulti<'a, K, V> {}
53-
5448
impl<'a, K: Eq + Hash, V> RefMutMulti<'a, K, V> {
5549
pub(crate) unsafe fn new(
5650
guard: Arc<RwLockWriteGuardDetached<'a>>,

src/mapref/one.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ pub struct Ref<'a, K, V> {
99
v: &'a V,
1010
}
1111

12-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Send for Ref<'a, K, V> {}
13-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Sync for Ref<'a, K, V> {}
14-
1512
impl<'a, K: Eq + Hash, V> Ref<'a, K, V> {
1613
pub(crate) unsafe fn new(guard: RwLockReadGuardDetached<'a>, k: &'a K, v: &'a V) -> Self {
1714
Self {
@@ -83,9 +80,6 @@ pub struct RefMut<'a, K, V> {
8380
v: &'a mut V,
8481
}
8582

86-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Send for RefMut<'a, K, V> {}
87-
unsafe impl<'a, K: Eq + Hash + Sync, V: Sync> Sync for RefMut<'a, K, V> {}
88-
8983
impl<'a, K: Eq + Hash, V> RefMut<'a, K, V> {
9084
pub(crate) unsafe fn new(guard: RwLockWriteGuardDetached<'a>, k: &'a K, v: &'a mut V) -> Self {
9185
Self { guard, k, v }

0 commit comments

Comments
 (0)