Gestion de la durée de vie du ramasse-miettes en Rust : comment implémenter le garbage collection pour les objets à longue durée de vie
Bonjour, collègues ! Je suis nouveau dans Rust et j'essaie de comprendre la gestion de la mémoire. Je viens de Java, où le garbage collector résout tous les problèmes de mémoire, et j'ai maintenant du mal à m'habituer au système de ownership et de lifetimes.
J'ai besoin d'implémenter une structure de données où les objets peuvent vivre longtemps et se référer les uns aux autres. Par exemple, un graphe avec des références cycliques. En Java, j'aurais simplement créé un `HashMap>` et oublié. En Rust, le compilateur se plaint des emprunts et des lifetimes.
J'essaie de faire quelque chose comme :
```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);
}
```
Le compilateur donne des erreurs sur les lifetimes et les emprunts. Je comprends que c'est à cause des règles de ownership, mais comment implémenter le garbage collection pour de tels cas ? Dois-je utiliser `Rc` et `Re