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}