dope-core 0.15.0

The manifold runtime
Documentation
use std::{marker, mem};

use crate::{backend::fixed, driver, io::fd::handles};

#[repr(transparent)]
pub(crate) struct Retirement(handles::FixedSlot);

impl Retirement {
    pub(super) fn new(slot: handles::FixedSlot) -> Self {
        Self(slot)
    }

    pub(crate) unsafe fn from_deferred(slot: handles::FixedSlot) -> Self {
        Self(slot)
    }

    pub(crate) fn into_fixed(self) -> handles::FixedSlot {
        self.0
    }

    pub(crate) fn bind<'d>(self, _driver: driver::Reference<'d>) -> fixed::Retirement<'d> {
        fixed::Retirement {
            slot: self.0,
            _brand: marker::PhantomData,
        }
    }
}

const _: () = assert!(mem::size_of::<Retirement>() == mem::size_of::<handles::FixedSlot>());