summaryrefslogtreecommitdiff
path: root/src/collection/retry.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/collection/retry.rs')
-rw-r--r--src/collection/retry.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/collection/retry.rs b/src/collection/retry.rs
index 28602f2..42d86e5 100644
--- a/src/collection/retry.rs
+++ b/src/collection/retry.rs
@@ -513,15 +513,19 @@ impl<L: Lockable> RetryingLockCollection<L> {
pub fn try_lock<'g, 'key: 'g, Key: Keyable + 'key>(
&'g self,
key: Key,
- ) -> Option<LockGuard<'key, L::Guard<'g>, Key>> {
+ ) -> Result<LockGuard<'key, L::Guard<'g>, Key>, Key> {
unsafe {
// safety: we're taking the thread key
- self.raw_try_lock().then(|| LockGuard {
- // safety: we just succeeded in locking everything
- guard: self.guard(),
- key,
- _phantom: PhantomData,
- })
+ if self.raw_try_lock() {
+ Ok(LockGuard {
+ // safety: we just succeeded in locking everything
+ guard: self.guard(),
+ key,
+ _phantom: PhantomData,
+ })
+ } else {
+ Err(key)
+ }
}
}