Struct RawOneShotMutex

Source
pub struct RawOneShotMutex { /* private fields */ }
Expand description

A one-shot mutex that panics instead of (dead)locking on contention.

This mutex allows no contention and panics instead of blocking on lock if it is already locked. This is useful in situations where contention would be a bug, such as in single-threaded programs that would deadlock on contention.

This mutex should be used through OneShotMutex.

§Examples

use one_shot_mutex::sync::OneShotMutex;

static X: OneShotMutex<i32> = OneShotMutex::new(42);

// This is equivalent to `X.try_lock().unwrap()`.
let x = X.lock();

// This panics instead of deadlocking.
// let x2 = X.lock();

// Once we unlock the mutex, we can lock it again.
drop(x);
let x = X.lock();

Implementations§

Source§

impl RawOneShotMutex

Source

pub const fn new() -> Self

Trait Implementations§

Source§

impl Default for RawOneShotMutex

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl RawMutex for RawOneShotMutex

Source§

const INIT: Self

Initial value for an unlocked mutex.
Source§

type GuardMarker = GuardSend

Marker type which determines whether a lock guard should be Send. Use one of the GuardSend or GuardNoSend helper types here.
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. Read more
Source§

fn is_locked(&self) -> bool

Checks whether the mutex is currently locked.
Source§

impl RawMutexFair for RawOneShotMutex

Source§

unsafe fn unlock_fair(&self)

Unlocks this mutex using a fair unlock protocol. Read more
Source§

unsafe fn bump(&self)

Temporarily yields the mutex to a waiting thread if there is one. Read more

Auto Trait Implementations§

§

impl !Freeze for RawOneShotMutex

§

impl RefUnwindSafe for RawOneShotMutex

§

impl Send for RawOneShotMutex

§

impl Sync for RawOneShotMutex

§

impl Unpin for RawOneShotMutex

§

impl UnwindSafe for RawOneShotMutex

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.