hibana 0.9.3

Session-typed choreographic programming for no_std Rust protocols, inspired by affine MPST
Documentation
use crate::{endpoint::kernel::lane_port, global::typestate::RecvMeta};

pub(crate) struct BranchRecvState {
    prepared_meta: Option<RecvMeta>,
    pending_recv: lane_port::PendingRecv,
}

impl BranchRecvState {
    #[inline]
    pub(crate) const fn empty() -> Self {
        Self {
            prepared_meta: None,
            pending_recv: lane_port::PendingRecv::new(),
        }
    }

    #[inline]
    pub(crate) const fn armed() -> Self {
        Self {
            prepared_meta: None,
            pending_recv: lane_port::PendingRecv::new(),
        }
    }

    #[inline]
    pub(crate) fn prepared_meta(&self) -> Option<RecvMeta> {
        self.prepared_meta
    }

    #[inline]
    pub(crate) fn set_prepared_meta(&mut self, prepared_meta: Option<RecvMeta>) {
        self.prepared_meta = prepared_meta;
    }

    #[inline]
    pub(crate) fn pending_recv_mut(&mut self) -> &mut lane_port::PendingRecv {
        &mut self.pending_recv
    }
}