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 37 38 39 40 41
// use std::cell::RefCell; // use std::rc::Rc; // #[derive(Debug, Copy, Clone)] // enum Color { // Red, // Black, // } // impl Color { // fn opposite(self) -> Self { // match self { // Self::Red => Self::Black, // Self::Black => Self::Red, // } // } // } // #[derive(Debug, Clone)] // struct Node<T: Ord + PartialEq + Eq + Clone> { // value: T, // color: Color, // left: Option<Rc<RefCell<Node<T>>>>, // right: Option<Rc<RefCell<Node<T>>>>, // parent: Option<Rc<RefCell<Node<T>>>>, // } // impl<T: Ord + PartialEq + Eq + Clone> Node<T> { // fn new(value: T) -> Self { // Self { // value, // color: Color::Red, // left: None, // right: None, // parent: None, // } // } // pub fn append(&mut self, node: Rc<RefCell<Node<T>>>) { // } // }