Avatar ·

Explication holistique de Cell et des types à compteur de références en Rust

Je suis débutant en Rust et j'essaie de comprendre comment fonctionnent Cell, RefCell, Rc et Arc. Dans la documentation officielle, ils sont décrits, mais il me manque une vue d'ensemble — comment ces types sont liés entre eux et quand utiliser lequel. Voici un exemple concret qui m'a dérouté. J'essaie de créer un graphe où les nœuds peuvent se référencer mutuellement. J'ai une structure Node : ```rust struct Node { value: i32, children: Vec, } ``` Mais je ne peux pas ajouter de références cycliques, car la possession exige que chaque nœud ait un seul propriétaire. J'ai essayé d'utiliser des références avec des durées de vie : ```rust struct Node<'a> { value: i32, children: Vec<&'a Node<'a>>, } ``` Mais le compilateur se plaint des durées de vie et je ne comprends pas comment corriger cela. Ensuite, j'ai lu sur Rc, mais quand je veux modifier la valeur d'un nœud via Rc, le compilateur dit que Rc ne permet pas l'accès mutable. Alors j'ai trouvé RefCell et Rc>, mais cela semble être une sorte de béquille. S'il vous plaît, expliquez.