Skip to main content

dope_core/driver/route/table/
current.rs

1use o3::depot::arena::slab::{entries, external};
2
3use crate::driver::{route, route::table::Key};
4
5pub struct Current<'a, T, Tag: route::Tag>(
6    external::Borrowed<
7        entries::Busy<
8            'a,
9            external::Stamped<T, route::Epoch>,
10            { u32::MAX },
11            entries::Interior<true>,
12            1,
13        >,
14        Tag,
15        true,
16    >,
17);
18
19impl<'a, T, Tag: route::Tag> Current<'a, T, Tag> {
20    pub(in crate::driver::route) fn new(
21        entry: external::Borrowed<
22            entries::Busy<
23                'a,
24                external::Stamped<T, route::Epoch>,
25                { u32::MAX },
26                entries::Interior<true>,
27                1,
28            >,
29            Tag,
30            true,
31        >,
32    ) -> Self {
33        Self(entry)
34    }
35
36    pub fn key(&self) -> Key<Tag> {
37        Key::new(self.0.key())
38    }
39
40    pub fn get_mut(&mut self) -> &mut T {
41        self.0.get_mut()
42    }
43
44    pub fn take(self) -> T {
45        self.0.take()
46    }
47
48    pub fn discard(self) {
49        self.0.discard();
50    }
51}