airlock 0.0.2

no_std async communication
Documentation

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "thiserror", derive(thiserror::Error))]
pub enum SendErrorNoWait<T> {
    #[cfg_attr(feature = "thiserror", error("Full"))]
    Full(T),
    #[cfg_attr(feature = "thiserror", error("Closed"))]
    Closed(T),
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "thiserror", derive(thiserror::Error))]
pub enum SendError<T> {
    #[cfg_attr(feature = "thiserror", error("Closed"))]
    Closed(T),
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "thiserror", derive(thiserror::Error))]
pub enum RecvErrorNoWait {
    #[cfg_attr(feature = "thiserror", error("Empty"))]
    Empty,
    #[cfg_attr(feature = "thiserror", error("Full"))]
    Closed,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "thiserror", derive(thiserror::Error))]
pub enum RecvError {
    #[cfg_attr(feature = "thiserror", error("Full"))]
    Closed,
}

impl<T> SendErrorNoWait<T> {
    pub fn full(value: T) -> Self {
        Self::Full(value)
    }
    pub fn closed(value: T) -> Self {
        Self::Closed(value)
    }

    pub fn is_full(&self) -> bool {
        matches!(self, Self::Full { .. })
    }
    pub fn is_closed(&self) -> bool {
        matches!(self, Self::Closed { .. })
    }
}

impl RecvErrorNoWait {
    pub fn empty() -> Self {
        Self::Empty
    }
    pub fn closed() -> Self {
        Self::Closed
    }

    pub fn is_empty(&self) -> bool {
        matches!(self, Self::Empty { .. })
    }
    pub fn is_closed(&self) -> bool {
        matches!(self, Self::Closed { .. })
    }
}

impl<T> SendError<T> {
    pub fn closed(value: T) -> Self {
        Self::Closed(value)
    }

    pub fn is_closed(&self) -> bool {
        matches!(self, Self::Closed { .. })
    }
}

impl RecvError {
    pub fn closed() -> Self {
        Self::Closed
    }

    pub fn is_closed(&self) -> bool {
        matches!(self, Self::Closed { .. })
    }
}