找出 Rc 树里的 bug

来自 Box、Rc 与 Arc
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));
}
在试验场中打开
报告错误