pub struct FusedRwLock<T: ?Sized> { /* private fields */ }Expand description
A special RwLock which can be locked exclusively any number of consecutive times, but once initially locked shared, can never be unlocked. This allows unguarded reads to occur
Implementations§
Source§impl<T> FusedRwLock<T>
impl<T> FusedRwLock<T>
Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Moves the inner value out of the FusedRwLock. This is sound because self is moved into the function, and thus no other accesses exist
Source§impl<T: ?Sized> FusedRwLock<T>
impl<T: ?Sized> FusedRwLock<T>
Sourcepub fn try_get_mut(&mut self) -> Option<&mut T>
pub fn try_get_mut(&mut self) -> Option<&mut T>
Mutably borrows the interior of the lock, if it has not been locked for reading access This is sound because taking self by &mut statically guarantees no other accesses exist. Returns None if the lock has been locked for reading
Sourcepub unsafe fn get_mut_unlocked(&mut self) -> &mut T
pub unsafe fn get_mut_unlocked(&mut self) -> &mut T
Mutably borrows the interior of the lock, even if it has been locked for reading. This function is unsafe because, while not necessarily undefined behaviour, calling this function after it was locked for reading can be used to violate the logical invariant of FusedRwLock.
Sourcepub fn is_locked(&self) -> bool
pub fn is_locked(&self) -> bool
Check if the FusedRwLock has been locked for reading. This does not guarantee any synchronization, even if it returns true. Except where self is reborrowed from &mut, it should only be used as a hint to avoid needless calls to self.try_read A return of true is guaranteed to remain true for the lifetime of the lock. A return of false may be invalidated at any time.
Sourcepub fn lock(&self)
pub fn lock(&self)
Locks this FusedRwLock for reading. After this call, it becomes impossible to acquire the lock for writing, and safe code cannot be used to modify the inner value (except inside an UnsafeCell)
Sourcepub fn try_read(&self) -> Option<&T>
pub fn try_read(&self) -> Option<&T>
Returns a shared reference to the interior of the lock, if it has been locked for reading.
Sourcepub fn read(&self) -> &T
pub fn read(&self) -> &T
Locks the RwLock for reading, and returns a shared reference to the interior of the lock
Sourcepub fn try_write(&self) -> Option<FusedRwLockGuard<'_, T>>
pub fn try_write(&self) -> Option<FusedRwLockGuard<'_, T>>
Acquires an exclusive lock to the interior of the lock, if this lock has not already been locked for reading. Otherwise, returns None