Skip to main content

qubit_atomic/atomic/
mod.rs

1// =============================================================================
2//    Copyright (c) 2025 - 2026 Haixing Hu.
3//
4//    SPDX-License-Identifier: Apache-2.0
5//
6//    Licensed under the Apache License, Version 2.0.
7// =============================================================================
8
9//! Atomic value wrappers, counters, and reference helpers.
10
11#[macro_use]
12mod macros;
13
14mod arc_atomic;
15mod arc_atomic_count;
16mod arc_atomic_ref;
17mod arc_atomic_signed_count;
18#[allow(clippy::module_inception)]
19mod atomic;
20mod atomic_bool;
21mod atomic_count;
22mod atomic_f32;
23mod atomic_f64;
24mod atomic_i128;
25mod atomic_i16;
26mod atomic_i32;
27mod atomic_i64;
28mod atomic_i8;
29mod atomic_integer_value;
30mod atomic_isize;
31mod atomic_number_ops;
32mod atomic_ops;
33mod atomic_ref;
34mod atomic_signed_count;
35mod atomic_u128;
36mod atomic_u16;
37mod atomic_u32;
38mod atomic_u64;
39mod atomic_u8;
40mod atomic_usize;
41mod atomic_value;
42mod sealed;
43
44pub use arc_atomic::ArcAtomic;
45pub use arc_atomic_count::ArcAtomicCount;
46pub use arc_atomic_ref::ArcAtomicRef;
47pub use arc_atomic_signed_count::ArcAtomicSignedCount;
48pub use atomic::Atomic;
49pub use atomic_count::AtomicCount;
50pub use atomic_ref::AtomicRef;
51pub use atomic_signed_count::AtomicSignedCount;
52
53/// Hidden implementation hooks used by integration and model tests.
54#[doc(hidden)]
55pub mod testing {
56    pub use super::atomic_count::try_update_atomic_count;
57}
58
59/// Concrete primitive atomic wrappers for const initialization use cases.
60///
61/// Prefer [`Atomic<T>`](Atomic) for normal usage. These concrete wrappers are
62/// exposed under an explicit module path so callers opt into them intentionally
63/// when they need a `const fn new` constructor.
64pub mod primitive {
65    pub use super::atomic_bool::AtomicBool;
66    pub use super::atomic_f32::AtomicF32;
67    pub use super::atomic_f64::AtomicF64;
68    pub use super::atomic_i8::AtomicI8;
69    pub use super::atomic_i16::AtomicI16;
70    pub use super::atomic_i32::AtomicI32;
71    pub use super::atomic_i64::AtomicI64;
72    pub use super::atomic_i128::AtomicI128;
73    pub use super::atomic_isize::AtomicIsize;
74    pub use super::atomic_u8::AtomicU8;
75    pub use super::atomic_u16::AtomicU16;
76    pub use super::atomic_u32::AtomicU32;
77    pub use super::atomic_u64::AtomicU64;
78    pub use super::atomic_u128::AtomicU128;
79    pub use super::atomic_usize::AtomicUsize;
80}