Skip to main content

geo_booleanop/splay/
node.rs

1#[derive(Clone, Debug)]
2pub struct Node<K, V> {
3    pub key: K,
4    pub value: V,
5    pub left: Option<Box<Node<K, V>>>,
6    pub right: Option<Box<Node<K, V>>>,
7}
8
9impl<K, V> Node<K, V> {
10    pub fn new_boxed(k: K, v: V, l: Option<Box<Node<K, V>>>, r: Option<Box<Node<K, V>>>) -> Box<Node<K, V>> {
11        Box::new(Node {
12            key: k,
13            value: v,
14            left: l,
15            right: r,
16        })
17    }
18
19    #[inline(always)]
20    pub fn pop_left(&mut self) -> Option<Box<Node<K, V>>> {
21        self.left.take()
22    }
23
24    #[inline(always)]
25    pub fn pop_right(&mut self) -> Option<Box<Node<K, V>>> {
26        self.right.take()
27    }
28}