找出 Rc 节点图里的 bug

来自 智能指针
Rust 1.98 进阶 4分钟 找出 1处问题

找出外部句柄被丢弃后这些节点仍可能保留分配的原因。

Rust
use std::cell::RefCell;
use std::rc::Rc;

struct Node {
    parent: RefCell<Option<Rc<Node>>>,
    children: RefCell<Vec<Rc<Node>>>,
}

fn attach(parent: &Rc<Node>, child: &Rc<Node>) {
    *child.parent.borrow_mut() = Some(Rc::clone(parent));
    parent.children.borrow_mut().push(Rc::clone(child));
}
在试验场中打开
报告错误