summaryrefslogtreecommitdiff
path: root/src/rwlock
diff options
context:
space:
mode:
authorMica White <botahamec@outlook.com>2024-03-11 22:41:13 -0400
committerMica White <botahamec@outlook.com>2024-03-11 22:41:13 -0400
commita22ffadbebddcbec9bb127b295f8a8516174e6e6 (patch)
tree66925b072f43646aafb40834e293c11b98f08c87 /src/rwlock
parentef34f899313ed4e4c5e452aef2c670f7d51f1ca9 (diff)
More trait bound fixes
Diffstat (limited to 'src/rwlock')
-rw-r--r--src/rwlock/read_guard.rs12
-rw-r--r--src/rwlock/rwlock.rs10
-rw-r--r--src/rwlock/write_guard.rs7
3 files changed, 11 insertions, 18 deletions
diff --git a/src/rwlock/read_guard.rs b/src/rwlock/read_guard.rs
index 074b0a9..1fbbceb 100644
--- a/src/rwlock/read_guard.rs
+++ b/src/rwlock/read_guard.rs
@@ -42,19 +42,13 @@ impl<'a, 'key: 'a, T: ?Sized + 'a, Key: Keyable, R: RawRwLock>
/// Create a guard to the given mutex. Undefined if multiple guards to the
/// same mutex exist at once.
#[must_use]
- pub(super) const unsafe fn new(rwlock: &'a RwLock<T, R>, thread_key: Key) -> Self {
+ pub(super) unsafe fn new(rwlock: &'a RwLock<T, R>, thread_key: Key) -> Self {
Self {
- rwlock: RwLockReadRef(rwlock),
+ rwlock: RwLockReadRef(rwlock, PhantomData),
thread_key,
_phantom1: PhantomData,
- _phantom2: PhantomData,
}
}
}
-unsafe impl<'a, T: ?Sized + 'a, R: RawRwLock> Sync for RwLockReadRef<'a, T, R> {}
-
-unsafe impl<'a, 'key: 'a, T: ?Sized + 'a, Key: Keyable, R: RawRwLock> Sync
- for RwLockReadGuard<'a, 'key, T, Key, R>
-{
-}
+unsafe impl<'a, T: ?Sized + Sync + 'a, R: RawRwLock + Sync + 'a> Sync for RwLockReadRef<'a, T, R> {}
diff --git a/src/rwlock/rwlock.rs b/src/rwlock/rwlock.rs
index b1c4def..dc5ab30 100644
--- a/src/rwlock/rwlock.rs
+++ b/src/rwlock/rwlock.rs
@@ -1,5 +1,5 @@
-use std::cell::UnsafeCell;
use std::fmt::Debug;
+use std::{cell::UnsafeCell, marker::PhantomData};
use lock_api::RawRwLock;
@@ -161,7 +161,7 @@ impl<T: ?Sized, R: RawRwLock> RwLock<T, R> {
self.raw.lock_shared();
// safety: the lock is locked first
- RwLockReadRef(self)
+ RwLockReadRef(self, PhantomData)
}
/// Attempts to acquire this `RwLock` with shared read access without
@@ -203,7 +203,7 @@ impl<T: ?Sized, R: RawRwLock> RwLock<T, R> {
pub(crate) unsafe fn try_read_no_key(&self) -> Option<RwLockReadRef<'_, T, R>> {
if self.raw.try_lock_shared() {
// safety: the lock is locked first
- Some(RwLockReadRef(self))
+ Some(RwLockReadRef(self, PhantomData))
} else {
None
}
@@ -252,7 +252,7 @@ impl<T: ?Sized, R: RawRwLock> RwLock<T, R> {
self.raw.lock_exclusive();
// safety: the lock is locked first
- RwLockWriteRef(self)
+ RwLockWriteRef(self, PhantomData)
}
/// Attempts to lock this `RwLock` with exclusive write access.
@@ -295,7 +295,7 @@ impl<T: ?Sized, R: RawRwLock> RwLock<T, R> {
pub(crate) unsafe fn try_write_no_key(&self) -> Option<RwLockWriteRef<'_, T, R>> {
if self.raw.try_lock_exclusive() {
// safety: the lock is locked first
- Some(RwLockWriteRef(self))
+ Some(RwLockWriteRef(self, PhantomData))
} else {
None
}
diff --git a/src/rwlock/write_guard.rs b/src/rwlock/write_guard.rs
index 09fb898..0121140 100644
--- a/src/rwlock/write_guard.rs
+++ b/src/rwlock/write_guard.rs
@@ -59,14 +59,13 @@ impl<'a, 'key: 'a, T: ?Sized + 'a, Key: Keyable, R: RawRwLock>
/// Create a guard to the given mutex. Undefined if multiple guards to the
/// same mutex exist at once.
#[must_use]
- pub(super) const unsafe fn new(rwlock: &'a RwLock<T, R>, thread_key: Key) -> Self {
+ pub(super) unsafe fn new(rwlock: &'a RwLock<T, R>, thread_key: Key) -> Self {
Self {
- rwlock: RwLockWriteRef(rwlock),
+ rwlock: RwLockWriteRef(rwlock, PhantomData),
thread_key,
_phantom1: PhantomData,
- _phantom2: PhantomData,
}
}
}
-unsafe impl<'a, T: ?Sized + 'a, R: RawRwLock + Sync + 'a> Sync for RwLockWriteRef<'a, T, R> {}
+unsafe impl<'a, T: ?Sized + Sync + 'a, R: RawRwLock + Sync + 'a> Sync for RwLockWriteRef<'a, T, R> {}