cargo version docs.rs version

atomic_enum

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.

Example

```rust

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.

The crate can be used in a #[no_std] environment.

Maintenance Note

This crate is passively maintained.