| Crates.io | portable_atomic_enum |
| lib.rs | portable_atomic_enum |
| version | 0.3.1 |
| created_at | 2023-10-18 11:00:31.939175+00 |
| updated_at | 2024-03-03 15:29:40.027359+00 |
| description | An attribute to create an portable atomic wrapper around a C-style enum |
| homepage | |
| repository | https://github.com/bugadani/portable_atomic_enum |
| max_upload_size | |
| id | 1006598 |
| size | 6,030 |
This crate is a fork of atomic_enum and optionally uses
portable-atomic to support more targets.
An attribute to create an atomic wrapper around a C-style enum.
Internally, the generated wrapper uses an AtomicUsize to store the value.
The atomic operations have the same semantics as the equivalent operations
of AtomicUsize.
# use atomic_enum::atomic_enum;
# use std::sync::atomic::Ordering;
#[atomic_enum]
#[derive(Clone, Copy, Debug, PartialEq)]
enum CatState {
Dead = 0,
BothDeadAndAlive,
Alive,
}
let state = AtomicCatState::new(CatState::Dead);
state.store(CatState::Alive, Ordering::Relaxed);
assert_eq!(state.load(Ordering::Relaxed), CatState::Alive);
This attribute does not use or generate any unsafe code.
The crate can be used in a #[no_std] environment.
portable-atomic: polyfill atomic types using portable-atomic