dope-core 0.15.0

The manifold runtime
Documentation
use crate::driver::route::{self, table};

pub struct Entry<'a, T, Tag: route::Tag>(table::ExternalOccupiedEntry<'a, T, Tag>);

impl<'a, T, Tag: route::Tag> Entry<'a, T, Tag> {
    pub(in crate::driver::route::table) fn new(
        inner: table::ExternalOccupiedEntry<'a, T, Tag>,
    ) -> Self {
        Self(inner)
    }

    pub fn key(&self) -> table::Key<Tag> {
        let key = self.0.key();
        table::Key::new(
            route::SlotIndex::from_bounded(key.index()),
            key.generation(),
        )
    }

    pub fn get(&self) -> &T {
        self.0.get()
    }

    pub fn get_mut(&mut self) -> &mut T {
        self.0.get_mut()
    }

    pub fn remove(self) -> T {
        self.0.remove()
    }
}