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§
Required Associated Types§
Sourcetype 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.
Sourcefn lock_exclusive(&self)
fn lock_exclusive(&self)
Acquires an exclusive lock, blocking the current thread until it is able to do so.
Sourcefn try_lock_exclusive(&self) -> bool
fn try_lock_exclusive(&self) -> bool
Attempts to acquire an exclusive lock without blocking.
Sourceunsafe 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§
Sourcefn 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.