diff options
| author | Mica White <botahamec@gmail.com> | 2024-12-25 11:17:35 -0500 |
|---|---|---|
| committer | Mica White <botahamec@gmail.com> | 2024-12-25 11:17:35 -0500 |
| commit | 657377311d3b041ac7b942e61ddbbe2861c494ec (patch) | |
| tree | 5e041812c67e7ef0451b35d0b33ee90be28fbeaf /src/collection/retry.rs | |
| parent | 7e2a3aa417beb33c76fe98fbe49515c524cb0183 (diff) | |
try_lock returns a Result
Diffstat (limited to 'src/collection/retry.rs')
| -rw-r--r-- | src/collection/retry.rs | 18 |
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) + } } } |
