library/boxs/
trees.rs

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}