Struct spinning_top::RawSpinlock
source · pub struct RawSpinlock<R: Relax = Spin> { /* private fields */ }
Expand description
Provides mutual exclusion based on spinning on an AtomicBool
.
It’s recommended to use this type either combination with lock_api::Mutex
or
through the Spinlock
type.
§Example
use lock_api::RawMutex;
use spinning_top::RawSpinlock;
let lock: RawSpinlock = RawSpinlock::INIT;
assert_eq!(lock.try_lock(), true); // lock it
assert_eq!(lock.try_lock(), false); // can't be locked a second time
unsafe { lock.unlock(); } // unlock it
assert_eq!(lock.try_lock(), true); // now it can be locked again
Trait Implementations§
source§impl<R: Relax> RawMutex for RawSpinlock<R>
impl<R: Relax> RawMutex for RawSpinlock<R>
source§const INIT: RawSpinlock<R> = _
const INIT: RawSpinlock<R> = _
Initial value for an unlocked mutex.
§type GuardMarker = GuardSend
type GuardMarker = GuardSend
Marker type which determines whether a lock guard should be
Send
. Use
one of the GuardSend
or GuardNoSend
helper types here.Auto Trait Implementations§
impl<R = Spin> !Freeze for RawSpinlock<R>
impl<R> RefUnwindSafe for RawSpinlock<R>where
R: RefUnwindSafe,
impl<R> Send for RawSpinlock<R>where
R: Send,
impl<R> Sync for RawSpinlock<R>where
R: Sync,
impl<R> Unpin for RawSpinlock<R>where
R: Unpin,
impl<R> UnwindSafe for RawSpinlock<R>where
R: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more