weavatrix-scan 0.4.4

Deterministic, safe repository scanner for code intelligence
Documentation
use std::sync::{
    Arc,
    atomic::{AtomicBool, Ordering},
};

/// A cheap, thread-safe cancellation signal shared by walkers and scanners.
#[derive(Debug, Clone, Default)]
pub struct CancellationToken {
    cancelled: Arc<AtomicBool>,
}

impl CancellationToken {
    #[must_use]
    pub fn new() -> Self {
        Self::default()
    }

    pub fn cancel(&self) {
        self.cancelled.store(true, Ordering::Release);
    }

    #[must_use]
    pub fn is_cancelled(&self) -> bool {
        self.cancelled.load(Ordering::Acquire)
    }
}