Struct OwnedRwLockWriteGuard
struct OwnedRwLockWriteGuard<T: ?Sized> { ... }
Owned RAII structure used to release the exclusive write access of a lock when dropped.
This structure is created by the write_owned method
on RwLock.
Implementations
impl<T: ?Sized> OwnedRwLockWriteGuard<T>
fn map<F, U: ?Sized>(this: Self, f: F) -> OwnedRwLockMappedWriteGuard<T, U> where F: FnOnce(&mut T) -> &mut UMakes a new
OwnedRwLockMappedWriteGuardfor a component of the locked data.This operation cannot fail as the
OwnedRwLockWriteGuardpassed in already locked the data.This is an associated function that needs to be used as
OwnedRwLockWriteGuard::map(..). A method would interfere with methods of the same name on the contents of the locked data.Examples
use Arc; use ; ; # # asyncfn downgrade_map<F, U: ?Sized>(this: Self, f: F) -> OwnedRwLockReadGuard<T, U> where F: FnOnce(&T) -> &UMakes a new
OwnedRwLockReadGuardfor a component of the locked data.This operation cannot fail as the
OwnedRwLockWriteGuardpassed in already locked the data.This is an associated function that needs to be used as
OwnedRwLockWriteGuard::downgrade_map(..). A method would interfere with methods of the same name on the contents of the locked data.Inside of
f, you retain exclusive access to the data, despite only being given a&T. Handing out a&mut Twould result in unsoundness, as you could use interior mutability.Examples
use Arc; use ; ; # # asyncfn try_map<F, U: ?Sized>(this: Self, f: F) -> Result<OwnedRwLockMappedWriteGuard<T, U>, Self> where F: FnOnce(&mut T) -> Option<&mut U>Attempts to make a new
OwnedRwLockMappedWriteGuardfor a component of the locked data. The original guard is returned if the closure returnsNone.This operation cannot fail as the
OwnedRwLockWriteGuardpassed in already locked the data.This is an associated function that needs to be used as
OwnedRwLockWriteGuard::try_map(...). A method would interfere with methods of the same name on the contents of the locked data.Examples
use Arc; use ; ; # # asyncfn try_downgrade_map<F, U: ?Sized>(this: Self, f: F) -> Result<OwnedRwLockReadGuard<T, U>, Self> where F: FnOnce(&T) -> Option<&U>Attempts to make a new
OwnedRwLockReadGuardfor a component of the locked data. The original guard is returned if the closure returnsNone.This operation cannot fail as the
OwnedRwLockWriteGuardpassed in already locked the data.This is an associated function that needs to be used as
OwnedRwLockWriteGuard::try_downgrade_map(...). A method would interfere with methods of the same name on the contents of the locked data.Inside of
f, you retain exclusive access to the data, despite only being given a&T. Handing out a&mut Twould result in unsoundness, as you could use interior mutability.If this function returns
Err(...), the lock is never unlocked nor downgraded.Examples
use Arc; use ; ; # # asyncfn into_mapped(this: Self) -> OwnedRwLockMappedWriteGuard<T>Converts this
OwnedRwLockWriteGuardinto anOwnedRwLockMappedWriteGuard. This method can be used to store a non-mapped guard in a struct field that expects a mapped guard.This is equivalent to calling
OwnedRwLockWriteGuard::map(guard, |me| me).fn downgrade(self: Self) -> OwnedRwLockReadGuard<T>Atomically downgrades a write lock into a read lock without allowing any writers to take exclusive access of the lock in the meantime.
Note: This won't necessarily allow any additional readers to acquire locks, since
RwLockis fair and it is possible that a writer is next in line.Returns an RAII guard which will drop this read access of the
RwLockwhen dropped.Examples
# use RwLock; # use Arc; # # # asyncfn rwlock(this: &Self) -> &Arc<RwLock<T>>Returns a reference to the original
Arc<RwLock>.Examples
use Arc; use ; # # async
impl<P, T> Receiver for OwnedRwLockWriteGuard<T>
impl<T> Any for OwnedRwLockWriteGuard<T>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for OwnedRwLockWriteGuard<T>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for OwnedRwLockWriteGuard<T>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> Debug for OwnedRwLockWriteGuard<T>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<T> Display for OwnedRwLockWriteGuard<T>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<T> Freeze for OwnedRwLockWriteGuard<T>
impl<T> From for OwnedRwLockWriteGuard<T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> RefUnwindSafe for OwnedRwLockWriteGuard<T>
impl<T> Send for OwnedRwLockWriteGuard<T>
impl<T> Sync for OwnedRwLockWriteGuard<T>
impl<T> ToString for OwnedRwLockWriteGuard<T>
fn to_string(self: &Self) -> String
impl<T> Unpin for OwnedRwLockWriteGuard<T>
impl<T> UnsafeUnpin for OwnedRwLockWriteGuard<T>
impl<T> UnwindSafe for OwnedRwLockWriteGuard<T>
impl<T, U> Into for OwnedRwLockWriteGuard<T>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for OwnedRwLockWriteGuard<T>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for OwnedRwLockWriteGuard<T>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>
impl<T: ?Sized> Deref for OwnedRwLockWriteGuard<T>
fn deref(self: &Self) -> &T
impl<T: ?Sized> DerefMut for OwnedRwLockWriteGuard<T>
fn deref_mut(self: &mut Self) -> &mut T
impl<T: ?Sized> Drop for OwnedRwLockWriteGuard<T>
fn drop(self: &mut Self)