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.
Forked and maintained by l1npengtul to remove warnings when compiling for modern versions of Rust.
# Example ``` # use atomicenum::atomicenum; # use std::sync::atomic::Ordering; #[atomic_enum] #[derive(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.
Rust 2021 Edition (1.56)