lock_api

Trait RawRwLock

Source
pub unsafe trait RawRwLock {
    type GuardMarker;

    const INIT: Self;

    // Required methods
    fn lock_shared(&self);
    fn try_lock_shared(&self) -> bool;
    unsafe fn unlock_shared(&self);
    fn lock_exclusive(&self);
    fn try_lock_exclusive(&self) -> bool;
    unsafe fn unlock_exclusive(&self);

    // Provided methods
    fn is_locked(&self) -> bool { ... }
    fn is_locked_exclusive(&self) -> bool { ... }
}
Expand description

Basic operations for a reader-writer lock.

Types implementing this trait can be used by RwLock to form a safe and fully-functioning RwLock type.

§Safety

Implementations of this trait must ensure that the RwLock is actually exclusive: an exclusive lock can’t be acquired while an exclusive or shared lock exists, and a shared lock can’t be acquire while an exclusive lock exists.

Required Associated Constants§

Source

const INIT: Self

Initial value for an unlocked RwLock.

Required Associated Types§

Source

type GuardMarker

Marker type which determines whether a lock guard should be Send. Use one of the GuardSend or GuardNoSend helper types here.

Required Methods§

Source

fn lock_shared(&self)

Acquires a shared lock, blocking the current thread until it is able to do so.

Source

fn try_lock_shared(&self) -> bool

Attempts to acquire a shared lock without blocking.

Source

unsafe fn unlock_shared(&self)

Releases a shared lock.

§Safety

This method may only be called if a shared lock is held in the current context.

Source

fn lock_exclusive(&self)

Acquires an exclusive lock, blocking the current thread until it is able to do so.

Source

fn try_lock_exclusive(&self) -> bool

Attempts to acquire an exclusive lock without blocking.

Source

unsafe fn unlock_exclusive(&self)

Releases an exclusive lock.

§Safety

This method may only be called if an exclusive lock is held in the current context.

Provided Methods§

Source

fn is_locked(&self) -> bool

Checks if this RwLock is currently locked in any way.

Source

fn is_locked_exclusive(&self) -> bool

Check if this RwLock is currently exclusively locked.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§