forest_ds/
node.rs

1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2pub(crate) struct Node<T> {
3    pub(crate) value: T,
4
5    pub(crate) parent: Option<usize>,
6    pub(crate) prev_sibling: Option<usize>,
7    pub(crate) next_sibling: Option<usize>,
8    pub(crate) first_child: Option<usize>,
9    pub(crate) last_child: Option<usize>,
10}
11
12impl<T> Node<T> {
13    pub(crate) const fn new(value: T) -> Self {
14        Self {
15            value,
16            parent: None,
17            prev_sibling: None,
18            next_sibling: None,
19            first_child: None,
20            last_child: None,
21        }
22    }
23}
24
25impl<T: Default> Default for Node<T> {
26    fn default() -> Self {
27        Self {
28            value: Default::default(),
29            parent: Option::default(),
30            prev_sibling: Option::default(),
31            next_sibling: Option::default(),
32            first_child: Option::default(),
33            last_child: Option::default(),
34        }
35    }
36}