summaryrefslogtreecommitdiff
path: root/src/poisonable/poisonable.rs
diff options
context:
space:
mode:
authorMica White <botahamec@gmail.com>2024-12-25 17:58:06 -0500
committerMica White <botahamec@gmail.com>2024-12-25 17:58:06 -0500
commit37ab873d21ca1fcd43db8d6a26d5bac4f5285f71 (patch)
tree987e0a0604c29ceea8d17e424df65993608c7ea5 /src/poisonable/poisonable.rs
parentbfdbf20a813bb4b5527a3d6ff4a5c1bac134b466 (diff)
Move some logic into the Sharable trait
Diffstat (limited to 'src/poisonable/poisonable.rs')
-rw-r--r--src/poisonable/poisonable.rs13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/poisonable/poisonable.rs b/src/poisonable/poisonable.rs
index 0fc66a8..57436eb 100644
--- a/src/poisonable/poisonable.rs
+++ b/src/poisonable/poisonable.rs
@@ -47,11 +47,6 @@ unsafe impl<L: Lockable> Lockable for Poisonable<L> {
where
Self: 'g;
- type ReadGuard<'g>
- = PoisonResult<PoisonRef<'g, L::ReadGuard<'g>>>
- where
- Self: 'g;
-
fn get_ptrs<'a>(&'a self, ptrs: &mut Vec<&'a dyn RawLock>) {
self.inner.get_ptrs(ptrs)
}
@@ -65,6 +60,13 @@ unsafe impl<L: Lockable> Lockable for Poisonable<L> {
Err(PoisonError::new(ref_guard))
}
}
+}
+
+unsafe impl<L: Sharable> Sharable for Poisonable<L> {
+ type ReadGuard<'g>
+ = PoisonResult<PoisonRef<'g, L::ReadGuard<'g>>>
+ where
+ Self: 'g;
unsafe fn read_guard(&self) -> Self::ReadGuard<'_> {
let ref_guard = PoisonRef::new(&self.poisoned, self.inner.read_guard());
@@ -77,7 +79,6 @@ unsafe impl<L: Lockable> Lockable for Poisonable<L> {
}
}
-unsafe impl<L: Sharable> Sharable for Poisonable<L> {}
unsafe impl<L: OwnedLockable> OwnedLockable for Poisonable<L> {}
impl<L> From<L> for Poisonable<L> {