lock_api

Trait RawMutex

Source
pub unsafe trait RawMutex {
    type GuardMarker;

    const INIT: Self;

    // Required methods
    fn lock(&self);
    fn try_lock(&self) -> bool;
    unsafe fn unlock(&self);

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

Basic operations for a mutex.

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

§Safety

Implementations of this trait must ensure that the mutex is actually exclusive: a lock can’t be acquired while the mutex is already locked.

Required Associated Constants§

Source

const INIT: Self

Initial value for an unlocked mutex.

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(&self)

Acquires this mutex, blocking the current thread until it is able to do so.

Source

fn try_lock(&self) -> bool

Attempts to acquire this mutex without blocking. Returns true if the lock was successfully acquired and false otherwise.

Source

unsafe fn unlock(&self)

Unlocks this mutex.

§Safety

This method may only be called if the mutex is held in the current context, i.e. it must be paired with a successful call to lock, try_lock, try_lock_for or try_lock_until.

Provided Methods§

Source

fn is_locked(&self) -> bool

Checks whether the mutex is currently 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§