qubit-atomic 0.13.0

User-friendly atomic operations wrapper providing JDK-like atomic API
Documentation
/*******************************************************************************
 *
 *    Copyright (c) 2025 - 2026 Haixing Hu.
 *
 *    SPDX-License-Identifier: Apache-2.0
 *
 *    Licensed under the Apache License, Version 2.0.
 *
 ******************************************************************************/

//! Atomic value wrappers, counters, and reference helpers.

#[macro_use]
mod macros;

mod arc_atomic;
mod arc_atomic_count;
mod arc_atomic_ref;
mod arc_atomic_signed_count;
#[allow(clippy::module_inception)]
mod atomic;
mod atomic_bool;
mod atomic_count;
mod atomic_f32;
mod atomic_f64;
mod atomic_i128;
mod atomic_i16;
mod atomic_i32;
mod atomic_i64;
mod atomic_i8;
mod atomic_integer_value;
mod atomic_isize;
mod atomic_number_ops;
mod atomic_ops;
mod atomic_ref;
mod atomic_signed_count;
mod atomic_u128;
mod atomic_u16;
mod atomic_u32;
mod atomic_u64;
mod atomic_u8;
mod atomic_usize;
mod atomic_value;
mod sealed;

pub use arc_atomic::ArcAtomic;
pub use arc_atomic_count::ArcAtomicCount;
pub use arc_atomic_ref::ArcAtomicRef;
pub use arc_atomic_signed_count::ArcAtomicSignedCount;
pub use atomic::Atomic;
pub use atomic_count::AtomicCount;
pub use atomic_ref::AtomicRef;
pub use atomic_signed_count::AtomicSignedCount;

/// Concrete primitive atomic wrappers for const initialization use cases.
///
/// Prefer [`Atomic<T>`](Atomic) for normal usage. These concrete wrappers are
/// exposed under an explicit module path so callers opt into them intentionally
/// when they need a `const fn new` constructor.
pub mod primitive {
    pub use super::atomic_bool::AtomicBool;
    pub use super::atomic_f32::AtomicF32;
    pub use super::atomic_f64::AtomicF64;
    pub use super::atomic_i8::AtomicI8;
    pub use super::atomic_i16::AtomicI16;
    pub use super::atomic_i32::AtomicI32;
    pub use super::atomic_i64::AtomicI64;
    pub use super::atomic_i128::AtomicI128;
    pub use super::atomic_isize::AtomicIsize;
    pub use super::atomic_u8::AtomicU8;
    pub use super::atomic_u16::AtomicU16;
    pub use super::atomic_u32::AtomicU32;
    pub use super::atomic_u64::AtomicU64;
    pub use super::atomic_u128::AtomicU128;
    pub use super::atomic_usize::AtomicUsize;
}