#counter #atomic #order #width #integer

no-std width_counters

Atomic counters with variable bit widths and customizable atomic ordering

8 releases (stable)

2.0.1 Jun 12, 2023
2.0.0 Jun 10, 2023
1.0.3 May 13, 2023
0.1.11 May 12, 2023

#934 in Rust patterns

27 downloads per month

MIT/Apache

45KB
820 lines

width_counters

Usability:

License: MIT OR Apache-2.0 crates.io docs.rs

Development:

Maintenance: actively-developed GitHub Actions: CI


Overview

Atomic, thread-safe counters of differing integer widths

Comes with

These counters support

  • Incrementing/decrementing by default (1) or specified amounts,
  • Using per-operation atomic orderings, (see this also)
  • Instantiation with default offset (0) and default atomic ordering ( sequentially consistent ),
  • Instantiation with custom offset, custom ordering or both,
  • Instantiation with custom enum-flag-based counting behaviors (monotonic, nonmonotonic, incrementing, decrementing, cyclic, acyclic)
  • PartialEq, Eq, Hash, PartialOrd, Ord, Clone, Debug, Display
  • Send, Sync

Optional features

  • serde: Enable de/serialization

Dependencies

~1.3–1.9MB
~43K SLoC