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