lock_api

Struct ArcRwLockWriteGuard

Source
pub struct ArcRwLockWriteGuard<R: RawRwLock, T: ?Sized> { /* private fields */ }
Available on crate feature arc_lock only.
Expand description

An RAII rwlock guard returned by the Arc locking operations on RwLock. This is similar to the RwLockWriteGuard struct, except instead of using a reference to unlock the RwLock it uses an Arc<RwLock>. This has several advantages, most notably that it has an 'static lifetime.

Implementations§

Source§

impl<R: RawRwLock, T: ?Sized> ArcRwLockWriteGuard<R, T>

Source

pub fn rwlock(s: &Self) -> &Arc<RwLock<R, T>>

Returns a reference to the rwlock, contained in its Arc.

Source

pub fn unlocked<F, U>(s: &mut Self, f: F) -> U
where F: FnOnce() -> U,

Temporarily unlocks the RwLock to execute the given function.

This is functionally equivalent to the unlocked method on RwLockWriteGuard.

Source§

impl<R: RawRwLockDowngrade, T: ?Sized> ArcRwLockWriteGuard<R, T>

Source

pub fn downgrade(s: Self) -> ArcRwLockReadGuard<R, T>

Atomically downgrades a write lock into a read lock without allowing any writers to take exclusive access of the lock in the meantime.

This is functionally equivalent to the downgrade method on RwLockWriteGuard.

Source§

impl<R: RawRwLockUpgradeDowngrade, T: ?Sized> ArcRwLockWriteGuard<R, T>

Source

pub fn downgrade_to_upgradable(s: Self) -> ArcRwLockUpgradableReadGuard<R, T>

Atomically downgrades a write lock into an upgradable read lock without allowing any writers to take exclusive access of the lock in the meantime.

This is functionally identical to the downgrade_to_upgradable method on RwLockWriteGuard.

Source§

impl<R: RawRwLockFair, T: ?Sized> ArcRwLockWriteGuard<R, T>

Source

pub fn unlock_fair(s: Self)

Unlocks the RwLock using a fair unlock protocol.

This is functionally equivalent to the unlock_fair method on RwLockWriteGuard.

Source

pub fn unlocked_fair<F, U>(s: &mut Self, f: F) -> U
where F: FnOnce() -> U,

Temporarily unlocks the RwLock to execute the given function.

This is functionally equivalent to the unlocked_fair method on RwLockWriteGuard.

Source

pub fn bump(s: &mut Self)

Temporarily yields the RwLock to a waiting thread if there is one.

This method is functionally equivalent to the bump method on RwLockWriteGuard.

Trait Implementations§

Source§

impl<R: RawRwLock, T: Debug + ?Sized> Debug for ArcRwLockWriteGuard<R, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<R: RawRwLock, T: ?Sized> Deref for ArcRwLockWriteGuard<R, T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &T

Dereferences the value.
Source§

impl<R: RawRwLock, T: ?Sized> DerefMut for ArcRwLockWriteGuard<R, T>

Source§

fn deref_mut(&mut self) -> &mut T

Mutably dereferences the value.
Source§

impl<R: RawRwLock, T: Display + ?Sized> Display for ArcRwLockWriteGuard<R, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<R: RawRwLock, T: ?Sized> Drop for ArcRwLockWriteGuard<R, T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<R, T> Freeze for ArcRwLockWriteGuard<R, T>
where T: ?Sized,

§

impl<R, T> !RefUnwindSafe for ArcRwLockWriteGuard<R, T>

§

impl<R, T> Send for ArcRwLockWriteGuard<R, T>
where <R as RawRwLock>::GuardMarker: Send, R: Sync + Send, T: Send + Sync + ?Sized,

§

impl<R, T> Sync for ArcRwLockWriteGuard<R, T>
where <R as RawRwLock>::GuardMarker: Sync, R: Sync + Send, T: Send + Sync + ?Sized,

§

impl<R, T> Unpin for ArcRwLockWriteGuard<R, T>
where <R as RawRwLock>::GuardMarker: Unpin, T: ?Sized,

§

impl<R, T> !UnwindSafe for ArcRwLockWriteGuard<R, T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
Available on non-bootstrap only.
The target type on which the method may be called.
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.