pub struct AtomicOrdinal<T> { /* private fields */ }Expand description
Ordinal stored in AtomicUsize.
§Example
#[derive(Ordinal)]
enum Color {
Red,
Green,
Blue,
}
let a = AtomicOrdinal::new(Color::Red);
let ret = a.compare_exchange(
Color::Red,
Color::Blue,
Ordering::Relaxed,
Ordering::Relaxed,
);
assert!(ret.is_ok());Implementations§
Source§impl<T: Ordinal> AtomicOrdinal<T>
impl<T: Ordinal> AtomicOrdinal<T>
Sourcepub fn new(value: T) -> Self
pub fn new(value: T) -> Self
Store an ordinal value inside AtomicUsize.
Sourcepub fn load(&self, ordering: Ordering) -> T
pub fn load(&self, ordering: Ordering) -> T
Load an ordinal value from AtomicUsize.
Sourcepub fn store(&self, value: T, ordering: Ordering)
pub fn store(&self, value: T, ordering: Ordering)
Store the ordinal value in AtomicUsize.
Sourcepub fn compare_exchange(
&self,
old: T,
new: T,
success: Ordering,
failure: Ordering,
) -> Result<T, T>
pub fn compare_exchange( &self, old: T, new: T, success: Ordering, failure: Ordering, ) -> Result<T, T>
Compare exchange.
Trait Implementations§
Auto Trait Implementations§
impl<T> !Freeze for AtomicOrdinal<T>
impl<T> RefUnwindSafe for AtomicOrdinal<T>where
T: RefUnwindSafe,
impl<T> Send for AtomicOrdinal<T>where
T: Send,
impl<T> Sync for AtomicOrdinal<T>where
T: Sync,
impl<T> Unpin for AtomicOrdinal<T>where
T: Unpin,
impl<T> UnsafeUnpin for AtomicOrdinal<T>
impl<T> UnwindSafe for AtomicOrdinal<T>where
T: 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