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



Rust如何处理Rcs和Arcs的"隔离岛"场景?

"隔离岛"是指对象A包含指向对象B的指针,对象B包含指向对象A的指针,但在其他任何位置都没有指向这两个对象的指针。

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

Rust没有垃圾收集器,也不会检测引用循环。如果你的程序创建了不可访问的引用循环,它们就会被泄露,你可以避免它们,例如使用弱引用,或者一开始就不使用共享所有权。

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

另请参阅《铁锈》一书中关于参考周期的章节。

最新更新