use std::sync::{
Arc,
atomic::{AtomicBool, Ordering},
};
#[derive(Clone)]
pub(crate) struct CancellationToken(Arc<AtomicBool>);
impl CancellationToken {
pub(crate) fn new() -> Self {
CancellationToken(Arc::new(AtomicBool::new(false)))
}
pub(crate) fn cancel(&self) {
self.0.store(true, Ordering::Relaxed)
}
pub(crate) fn is_cancelled(&self) -> bool {
self.0.load(Ordering::Relaxed)
}
}