generic-atomics 0.1.0

Generic Atomic types for types that implement num-primitive traits
Documentation
#![no_std]
#![doc = include_str!("../README.md")]

use crate::atomic_number::PrimitiveAtomicNumber;

mod atomic_float;
mod atomic_float_wrapper;
mod atomic_integer;
mod atomic_number;

pub use atomic_float::AtomicFloat;
pub use atomic_float::IntoAtomicFloat;
pub use atomic_float_wrapper::UseUpdateToAdd;
pub use atomic_float_wrapper::UseUpdateToMax;
pub use atomic_float_wrapper::UseUpdateToMin;
pub use atomic_float_wrapper::UseUpdateToSub;
pub use atomic_integer::IntoAtomicInteger;
pub use atomic_number::IntoAtomicNumber;

#[expect(private_bounds)]
pub struct AtomicNumber<P: PrimitiveAtomicNumber + Send> {
    atomic: P::AN,
}

// i expect all atomics to match their associated type
// in size and allignment
const _: [(); core::mem::size_of::<AtomicNumber<u32>>()] = [(); core::mem::size_of::<u32>()];
const _: [(); core::mem::align_of::<AtomicNumber<u32>>()] = [(); core::mem::align_of::<u32>()];
const _: [(); core::mem::size_of::<AtomicNumber<f32>>()] = [(); core::mem::size_of::<f32>()];
const _: [(); core::mem::align_of::<AtomicNumber<f32>>()] = [(); core::mem::align_of::<f32>()];