Struct AssumeUnlockable

Source
pub struct AssumeUnlockable;
Expand description
§WARNING: AssumeUnlockable may cause undefined behaviour without unsafe code!

A dummy RawMutex implementation to skip synchronization on single threaded systems.

§Safety

AssumeUnlockable is highly unsafe and may cause undefined behaviour if multiple threads enter a critical section it guards, even without explicit unsafe code.

Note that uncontended spin locks are cheap. Usage is only recommended on platforms that don’t have atomics or are exclusively single threaded.

Through no fault of its own, lock_api’s API does not allow for safe encapsulation of this functionality. This is a hack for backwards compatibility.

Trait Implementations§

Source§

impl RawMutex for AssumeUnlockable

Source§

const INIT: AssumeUnlockable = AssumeUnlockable

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.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.