I want to implement a tree whose node has parent
field using Rust. From the official guide adding-a-reference-from-a-child-to-its-parent, they use the structure
struct Node {
value: i32,
parent: RefCell<Weak<Node>>,
children: RefCell<Vec<Rc<Node>>>,
}
To use an instance of RefCell<Rc<T>>
mutably, I can call .borrow_mut()
.
In the doc of std::cell
, let shared_map: Rc<RefCell<_>> = Rc::new(RefCell::new(HashMap::new()));
is used to introduce mutability to Rc
.
If I want a tree with parents which can be mutated, which one is recommended?