Rc<T> だけを使って循環リストを作った場合、循環参照が生じます。
その場合、その循環リスト全体が誰からも参照されなくなって、つまり、不要に
なっても「循環参照問題」が起きるために自動解放できないのです。

C#やJavaでは、この循環参照問題を解決することを主目的として、
遅さを犠牲に Garbage Collection を使っています。
これは「動的解析」に分類されます。

一方、Rustの場合は静的解析だけで済まそうとしていますが、結局、循環参照問題のために
完全自動化は出来ず、解放べきメモリが解放されずに残ってしまうという現象がおきえます。
これを防ぐには、人間側が 循環リストの最後と最初を結ぶためには、weak pointer を使う
などの注意深いプログラミングをすることで防ぐしかありません。
つまり、人間の注意深さでメモリーリークを防いでいるだけです。