1use std::cell::RefCell;
2use std::rc::{Rc, Weak};
3
4#[derive(Debug)]
5pub struct Node {
6 value: i32,
7 parent: RefCell<Weak<Node>>,
8 children: RefCell<Vec<Rc<Node>>>,
9}
10
11fn tree_test() {
12 let leaf = Rc::new(Node {
13 value: 10,
14 parent: RefCell::new(Weak::new()),
15 children: RefCell::new(vec![]),
16 });
17 let branch = Rc::new(Node {
18 value: 20,
19 parent: RefCell::new(Weak::new()),
20 children: RefCell::new(vec![Rc::clone(&leaf)]),
21 });
22 *leaf.parent.borrow_mut() = Rc::downgrade(&branch);
23}