Avatar ·

Rust中垃圾回收器的生命周期管理:如何为长生命周期对象实现垃圾回收

大家好!我是Rust新手,正在尝试理解内存管理。我来自Java,在那里垃圾回收器解决了所有内存问题,现在很难适应所有权和生命周期系统。 我需要实现一个数据结构,其中对象可以长期存在并相互引用。例如,带有循环引用的图。在Java中,我只需创建`HashMap>`然后忘记它。而在Rust中,编译器会抱怨借用和生命周期。 我尝试做类似的事情: ```rust struct Node { id: u32, children: Vec<&Node>, } fn main() { let mut nodes = Vec::new(); let node1 = Node { id: 1, children: vec![] }; let node2 = Node { id: 2, children: vec![] }; node1.children.push(&node2); node2.children.push(&node1); } ``` 编译器给出了关于生命周期和借用的错误。我理解这是由于所有权规则,但如何在这种情况下实现垃圾回收?是否需要使用`Rc`和`RefCell`?