mod mutex;
mod remutex;
mod rwlock;
pub use mutex::*;
pub use remutex::*;
pub use rwlock::*;
pub use parking_lot;
#[macro_use]
extern crate scopeguard;
#[cfg(test)]
mod test {
use super::*;
#[allow(dead_code)]
static MUTEXED: Mutex<()> = Mutex::new(());
#[allow(dead_code)]
static REMUTEXED: ReentrantMutex<()> = ReentrantMutex::new(());
#[allow(dead_code)]
static RWLOCKED: RwLock<()> = RwLock::new(());
macro_rules! assert_impls_traits {
($ty:ty : $trait0:ident $(+ $trait_:ident)* $(,)?) => {{
fn check<T: ?Sized + $trait0 $(+ $trait_)*>() {}
check::<$ty>();
}};
}
#[test]
fn check_parkinglot_traits() {
use parking_lot::lock_api::*;
assert_impls_traits!(parking_lot::RawMutex: Send + Sync + RawMutexFair + RawMutexTimed);
assert_impls_traits!(parking_lot::RawRwLock: Send + Sync + RawRwLock
+ RawRwLockFair + RawRwLockDowngrade + RawRwLockTimed + RawRwLockRecursive + RawRwLockRecursiveTimed
+ RawRwLockUpgrade + RawRwLockUpgradeFair + RawRwLockUpgradeDowngrade + RawRwLockUpgradeTimed);
}
}