summaryrefslogtreecommitdiff
path: root/ecs/src/lock.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2025-02-04 18:04:32 +0100
committerHampusM <hampus@hampusmat.com>2025-02-04 18:04:32 +0100
commit76d782195e3cc19832ad57ffffda4e953c6970b3 (patch)
treebd237c61ff895bd71e79a05338727c0ed68ef677 /ecs/src/lock.rs
parent0d75299fe6b04e0866a44ad484b42703c6a9aa26 (diff)
chore(ecs): use parking_lot for inner rwlock of Lock
Diffstat (limited to 'ecs/src/lock.rs')
-rw-r--r--ecs/src/lock.rs19
1 files changed, 7 insertions, 12 deletions
diff --git a/ecs/src/lock.rs b/ecs/src/lock.rs
index bc5351f..74b0415 100644
--- a/ecs/src/lock.rs
+++ b/ecs/src/lock.rs
@@ -1,6 +1,7 @@
use std::mem::transmute;
use std::ops::{Deref, DerefMut};
-use std::sync::{PoisonError, RwLock, RwLockReadGuard, RwLockWriteGuard, TryLockError};
+
+use parking_lot::{RwLock, RwLockReadGuard, RwLockWriteGuard};
use crate::type_name::TypeName;
@@ -27,10 +28,8 @@ where
/// Returns `Err` if unavailable (A mutable handle is hold).
pub fn read_nonblock(&self) -> Result<ReadGuard<Value>, Error>
{
- let guard = self.inner.try_read().or_else(|err| match err {
- TryLockError::WouldBlock => Err(Error::ReadUnavailable),
- TryLockError::Poisoned(poison_err) => Ok(poison_err.into_inner()),
- })?;
+ let guard = self.inner.try_read().ok_or(Error::ReadUnavailable)?;
+
tracing::trace!("Acquired lock to value of type {}", guard.type_name());
Ok(ReadGuard { inner: guard })
@@ -42,10 +41,8 @@ where
/// Returns `Err` if unavailable (A mutable or immutable handle is hold).
pub fn write_nonblock(&self) -> Result<WriteGuard<Value>, Error>
{
- let guard = self.inner.try_write().or_else(|err| match err {
- TryLockError::WouldBlock => Err(Error::WriteUnavailable),
- TryLockError::Poisoned(poison_err) => Ok(poison_err.into_inner()),
- })?;
+ let guard = self.inner.try_write().ok_or(Error::WriteUnavailable)?;
+
tracing::trace!(
"Acquired mutable lock to value of type {}",
guard.type_name()
@@ -56,9 +53,7 @@ where
pub fn into_inner(self) -> Value
{
- self.inner
- .into_inner()
- .unwrap_or_else(PoisonError::into_inner)
+ self.inner.into_inner()
}
}