use std::sync::Arc;
use std::sync::atomic::AtomicU64;
use std::sync::atomic::Ordering;
#[derive(Clone, Debug)]
pub struct Counter(Arc<AtomicU64>);
impl Counter {
pub(crate) fn new() -> Self {
Self(Default::default())
}
pub fn add(&self, value: u64) {
self.0.fetch_add(value, Ordering::Release);
}
pub fn value(&self) -> u64 {
self.0.load(Ordering::Acquire)
}
}