Lebenszeitverwaltung des Garbage Collectors in Rust: Wie man Garbage Collection für langlebige Objekte implementiert
Hallo Kollegen! Ich bin neu in Rust und versuche, mich mit der Speicherverwaltung vertraut zu machen. Ich komme aus Java, wo der Garbage Collector alle Speicherprobleme löst, und jetzt fällt es mir schwer, mich an das Ownership- und Lifetime-System zu gewöhnen.
Ich muss eine Datenstruktur implementieren, in der Objekte lange leben und aufeinander verweisen können. Zum Beispiel ein Graph mit zyklischen Referenzen. In Java würde ich einfach eine `HashMap>` erstellen und vergessen. In Rust hingegen beschwert sich der Compiler über Borrows und Lifetimes.
Ich versuche so etwas wie:
```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);
}
```
Der Compiler gibt Fehler zu Lifetimes und Borrows aus. Ich verstehe, dass dies an den Ownership-Regeln liegt, aber wie implementiere ich Garbage Collection für solche Fälle? Muss ich `Rc` und `Re
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen