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
#[derive(Clone, Debug)] pub struct Node<K, V> { pub key: K, pub value: V, pub left: Option<Box<Node<K, V>>>, pub right: Option<Box<Node<K, V>>>, } impl<K, V> Node<K, V> { pub fn new_boxed(k: K, v: V, l: Option<Box<Node<K, V>>>, r: Option<Box<Node<K, V>>>) -> Box<Node<K, V>> { Box::new(Node { key: k, value: v, left: l, right: r, }) } #[inline(always)] pub fn pop_left(&mut self) -> Option<Box<Node<K, V>>> { self.left.take() } #[inline(always)] pub fn pop_right(&mut self) -> Option<Box<Node<K, V>>> { self.right.take() } }