diff options
Diffstat (limited to 'src/mutex')
| -rw-r--r-- | src/mutex/mutex.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mutex/mutex.rs b/src/mutex/mutex.rs index 080e043..d744891 100644 --- a/src/mutex/mutex.rs +++ b/src/mutex/mutex.rs @@ -285,12 +285,15 @@ impl<T: ?Sized, R: RawMutex> Mutex<T, R> { pub fn try_lock<'s, 'a: 's, 'k: 'a, Key: Keyable>( &'s self, key: Key, - ) -> Option<MutexGuard<'s, 'k, T, Key, R>> { + ) -> Result<MutexGuard<'s, 'k, T, Key, R>, Key> { unsafe { // safety: we have the key to the mutex - self.raw_try_lock().then(|| + if self.raw_try_lock() { // safety: we just locked the mutex - MutexGuard::new(self, key)) + Ok(MutexGuard::new(self, key)) + } else { + Err(key) + } } } |
