diff options
| author | Mica White <botahamec@outlook.com> | 2026-09-13 15:12:08 -0400 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2026-09-13 15:12:08 -0400 |
| commit | 16d6bd7ece4c4b9b72f6bd51c9b034270b745525 (patch) | |
| tree | 4ff744fc41319ce73abe06416fabeaa7c17fbd46 /src/poisonable.rs | |
| parent | 9fd7b94cd7c20abe66cea875a0e83e76a7a00fbc (diff) | |
Support no_stdno-std
Diffstat (limited to 'src/poisonable.rs')
| -rwxr-xr-x | src/poisonable.rs | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/src/poisonable.rs b/src/poisonable.rs index 8dada90..d81b876 100755 --- a/src/poisonable.rs +++ b/src/poisonable.rs @@ -1,5 +1,5 @@ -use std::marker::PhantomData; -use std::sync::atomic::AtomicBool; +use core::marker::PhantomData; +use core::sync::atomic::AtomicBool; use crate::ThreadKey; @@ -68,7 +68,7 @@ pub struct Poisonable<L> { /// [`LockCollection`]: `crate::LockCollection` pub struct PoisonRef<'a, G> { guard: G, - #[cfg(panic = "unwind")] + #[cfg(all(feature = "std", panic = "unwind"))] flag: &'a PoisonFlag, _phantom: PhantomData<&'a ()>, } @@ -137,13 +137,19 @@ pub type TryLockPoisonableResult<'flag, G> = #[cfg(test)] mod tests { + #[cfg(feature = "std")] use std::sync::Arc; + use alloc::vec::Vec; + use super::*; use crate::lockable::Lockable as _; - use crate::{LockCollection, Mutex, RwLock, ThreadKey}; + use crate::Mutex; + #[cfg(feature = "std")] + use crate::{LockCollection, RwLock, ThreadKey}; #[test] + #[cfg(feature = "std")] fn locking_poisoned_mutex_returns_error_in_collection() { let key = ThreadKey::get().unwrap(); let mutex = LockCollection::new(Poisonable::new(Mutex::new(42))); @@ -169,6 +175,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn locking_poisoned_rwlock_returns_error_in_collection() { let key = ThreadKey::get().unwrap(); let mutex = LockCollection::new(Poisonable::new(RwLock::new(42))); @@ -202,6 +209,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn non_poisoned_get_mut_is_err() { let mut mutex = Poisonable::new(Mutex::new(42)); @@ -226,6 +234,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn poisoned_into_inner() { let mutex = Poisonable::from(Mutex::new("foo")); @@ -250,6 +259,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn poisoned_into_child() { let mutex = Poisonable::from(Mutex::new("foo")); @@ -268,6 +278,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn scoped_lock_can_poison() { let key = ThreadKey::get().unwrap(); let mutex = Poisonable::new(Mutex::new(42)); @@ -292,6 +303,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn scoped_try_lock_can_fail() { let key = ThreadKey::get().unwrap(); let mutex = Poisonable::new(Mutex::new(42)); @@ -309,6 +321,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn scoped_try_lock_can_succeed() { let rwlock = Poisonable::new(RwLock::new(42)); @@ -324,6 +337,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn scoped_read_can_poison() { let key = ThreadKey::get().unwrap(); let mutex = Poisonable::new(RwLock::new(42)); @@ -348,6 +362,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn scoped_try_read_can_fail() { let key = ThreadKey::get().unwrap(); let rwlock = Poisonable::new(RwLock::new(42)); @@ -365,6 +380,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn scoped_try_read_can_succeed() { let rwlock = Poisonable::new(RwLock::new(42)); @@ -380,6 +396,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn display_works() { let key = ThreadKey::get().unwrap(); let mutex = Poisonable::new(Mutex::new("Hello, world!")); @@ -390,6 +407,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn ref_as_ref() { let key = ThreadKey::get().unwrap(); let collection = LockCollection::new(Poisonable::new(Mutex::new("foo"))); @@ -401,6 +419,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn ref_as_mut() { let key = ThreadKey::get().unwrap(); let collection = LockCollection::new(Poisonable::new(Mutex::new("foo"))); @@ -418,6 +437,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn guard_as_ref() { let key = ThreadKey::get().unwrap(); let collection = Poisonable::new(Mutex::new("foo")); @@ -429,6 +449,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn guard_as_mut() { let key = ThreadKey::get().unwrap(); let mutex = Poisonable::new(Mutex::new("foo")); @@ -446,6 +467,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn deref_mut_in_collection() { let key = ThreadKey::get().unwrap(); let collection = LockCollection::new(Poisonable::new(Mutex::new(42))); @@ -469,10 +491,14 @@ mod tests { poisonable.get_ptrs(&mut lock_ptrs); assert_eq!(lock_ptrs.len(), 1); - assert!(std::ptr::addr_eq(lock_ptrs[0], &raw const poisonable.inner)); + assert!(core::ptr::addr_eq( + lock_ptrs[0], + &raw const poisonable.inner + )); } #[test] + #[cfg(feature = "std")] fn clear_poison_for_poisoned_mutex() { let mutex = Arc::new(Poisonable::new(Mutex::new(0))); let c_mutex = Arc::clone(&mutex); @@ -497,6 +523,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn clear_poison_for_poisoned_rwlock() { let lock = Arc::new(Poisonable::new(RwLock::new(0))); let c_mutex = Arc::clone(&lock); @@ -522,6 +549,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn error_as_ref() { let mutex = Poisonable::new(Mutex::new("foo")); @@ -543,6 +571,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn error_as_mut() { let mutex = Poisonable::new(Mutex::new("foo")); @@ -570,6 +599,7 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn try_error_from_lock_error() { let mutex = Poisonable::new(Mutex::new("foo")); |
