From f6b38f7425a3183214dae79445446b042154688f Mon Sep 17 00:00:00 2001 From: Botahamec Date: Wed, 5 Feb 2025 20:31:00 -0500 Subject: Tests and optimization --- src/mutex.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/mutex.rs') diff --git a/src/mutex.rs b/src/mutex.rs index 99d0981..d6cba7d 100644 --- a/src/mutex.rs +++ b/src/mutex.rs @@ -213,6 +213,36 @@ mod tests { assert!(guard.0 != guard.2) } + #[test] + fn ref_as_mut() { + let mut key = ThreadKey::get().unwrap(); + let collection = LockCollection::new(crate::Mutex::new(0)); + let mut guard = collection.lock(&mut key); + let guard_mut = guard.as_mut().as_mut(); + + *guard_mut = 3; + drop(guard); + + let guard = collection.lock(&mut key); + + assert_eq!(guard.as_ref().as_ref(), &3); + } + + #[test] + fn guard_as_mut() { + let mut key = ThreadKey::get().unwrap(); + let mutex = crate::Mutex::new(0); + let mut guard = mutex.lock(&mut key); + let guard_mut = guard.as_mut(); + + *guard_mut = 3; + drop(guard); + + let guard = mutex.lock(&mut key); + + assert_eq!(guard.as_ref(), &3); + } + #[test] fn dropping_guard_releases_mutex() { let mut key = ThreadKey::get().unwrap(); -- cgit v1.2.3