Trait RawRwLock
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§
const INIT: Self
const INIT: Self
Initial value for an unlocked RwLock
.
Required Associated Types§
type GuardMarker
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§
Acquires a shared lock, blocking the current thread until it is able to do so.
Attempts to acquire a shared lock without blocking.
Releases a shared lock.
§Safety
This method may only be called if a shared lock is held in the current context.
fn lock_exclusive(&self)
fn lock_exclusive(&self)
Acquires an exclusive lock, blocking the current thread until it is able to do so.
fn try_lock_exclusive(&self) -> bool
fn try_lock_exclusive(&self) -> bool
Attempts to acquire an exclusive lock without blocking.
unsafe fn unlock_exclusive(&self)
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§
fn is_locked_exclusive(&self) -> bool
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.