diff options
Diffstat (limited to 'src/librustc_data_structures/sync.rs')
| -rw-r--r-- | src/librustc_data_structures/sync.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/librustc_data_structures/sync.rs b/src/librustc_data_structures/sync.rs index 184ef136976..0f534f0adec 100644 --- a/src/librustc_data_structures/sync.rs +++ b/src/librustc_data_structures/sync.rs @@ -390,6 +390,18 @@ impl<T> RwLock<T> { #[cfg(not(parallel_queries))] #[inline(always)] + pub fn try_write(&self) -> Result<WriteGuard<T>, ()> { + self.0.try_borrow_mut().map_err(|_| ()) + } + + #[cfg(parallel_queries)] + #[inline(always)] + pub fn try_write(&self) -> Result<WriteGuard<T>, ()> { + self.0.try_write().ok_or(()) + } + + #[cfg(not(parallel_queries))] + #[inline(always)] pub fn write(&self) -> WriteGuard<T> { self.0.borrow_mut() } |
