إدارة وقت حياة جامع القمامة في 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` و `Re