asyncnal 0.3.1

Fast concurrent & local asyncronous signalling
Documentation

pub trait ValidityMarker: Clone + Unpin {
    
    fn set(&self, value: ValidityState);
    fn get(&self) -> ValidityState;
    fn create() -> Self;
}

#[repr(u8)]
#[derive(Default, PartialEq, Eq, Clone, Copy)]
pub enum ValidityState {
    #[default]
    Idle,
    Killed,
    ShouldWake
}

impl ValidityState {
    pub const fn from_u8(code: u8) -> Option<ValidityState> {
        match code {
            0 => Some(Self::Idle),
            1 => Some(Self::Killed),
            2 => Some(Self::ShouldWake),
            _ => None
        }
    }
}

pub trait TechnicalCounter: Default {
    fn increment(&self);
    fn decrement(&self);
    fn get(&self) -> usize;
}

pub trait WakeQueue<T>: Default {
    fn enqueue(&self, item: T);
    fn dequeue(&self) -> Option<T>;
}