#atomic #enums #2021

yanked atomic_enum_2021

An attribute to create an atomic wrapper around a C-style enum, forked for Rust 2021

0.1.0 Jul 25, 2022

#3 in #2021

MIT license

19KB
256 lines

cargo version docs.rs version

atomic_enum_2021

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 atomic_enum::atomic_enum;
# 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.

MSRV

Rust 2021 Edition (1.56)

Dependencies

~1.5MB
~33K SLoC