dope-net 0.14.0

The manifold runtime
Documentation
mod raw;

use self::raw::guard::Guard;
use super::{OpenReservation, OpenRollback};

#[repr(transparent)]
pub struct ReservedOpen<'a, W, S, C>(Guard<'a, W, S, C>)
where
    C: OpenRollback<W, S>;

impl<'a, W, S, C> ReservedOpen<'a, W, S, C>
where
    C: OpenRollback<W, S>,
{
    pub fn new(context: &'a mut C, wire: W, send: S) -> Self {
        Self(Guard::new(context, wire, send))
    }
}

impl<W, S, C> OpenReservation<W, S> for ReservedOpen<'_, W, S, C>
where
    C: OpenRollback<W, S>,
{
    fn commit(self) -> (W, S) {
        let Self(guard) = self;
        guard.commit()
    }
}