diff options
Diffstat (limited to 'src/mutex.rs')
| -rw-r--r-- | src/mutex.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mutex.rs b/src/mutex.rs index 99d0981..d6cba7d 100644 --- a/src/mutex.rs +++ b/src/mutex.rs @@ -214,6 +214,36 @@ mod tests { } #[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(); let mutex: crate::Mutex<_> = Mutex::new("Hello, world!"); |
