Rust 如何处理引用计数类型的 "island of isolation"(引用循环)场景?

How does Rust handle the "island of isolation" (cycles of references) scenario for reference-counted types?

Rust 如何处理 RcArc 的 "island of isolation" 场景?

一个"island of isolation"是这样一种情况,其中对象A包含一个指向对象B的指针,而对象B包含一个指向对象A的指针,但是在其他任何地方都没有指向这两个对象的指针。

Rust 是否足够智能以检测到这一点,或者它是否会导致内存泄漏?

Rust 没有垃圾收集器,它不会检测引用循环。如果你的程序创建了不可访问的引用循环,它们就会被泄露,你应该避免它们,例如通过使用 weak references,或者首先不使用共享所有权。

请注意,创建引用循环的唯一方法是同时使用共享所有权和内部可变性。

另见 chapter on reference cycles in the Rust book