use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
#[derive(Clone, Debug)]
pub struct Counter(pub Arc<AtomicUsize>);
impl Counter {
pub fn new(value: usize) -> Self {
Counter(Arc::new(AtomicUsize::new(value)))
}
pub fn get(&self) -> usize {
self.0.load(Ordering::Relaxed)
}
pub fn set(&self, value: usize) {
self.0.store(value, Ordering::Relaxed);
}
pub fn tick(&self, ticks: usize) {
self.0.fetch_add(ticks, Ordering::Relaxed);
}
}