dope_core/driver/route/table/
current.rs1use 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}