Explicación holística de Cell y tipos con conteo de referencias en Rust
Soy nuevo en Rust y estoy tratando de entender cómo funcionan Cell, RefCell, Rc y Arc. En la documentación oficial están descritos, pero me falta una visión general: cómo se relacionan estos tipos entre sí y cuándo usar cada uno.
Aquí hay un ejemplo concreto que me confundió. Estoy tratando de crear un grafo donde los nodos puedan referirse entre sí. Tengo una estructura Node:
```rust
struct Node {
value: i32,
children: Vec,
}
```
Pero no puedo agregar referencias cíclicas porque la propiedad requiere que cada nodo tenga un único dueño. Intenté usar referencias con lifetimes:
```rust
struct Node<'a> {
value: i32,
children: Vec<&'a Node<'a>>,
}
```
Pero el compilador se queja de los lifetimes y no entiendo cómo solucionarlo. Luego leí sobre Rc, pero cuando quiero cambiar el valor de un nodo a través de Rc, el compilador dice que Rc no permite acceso mutable. Entonces encontré RefCell y Rc>, pero parece un parche.
Por favor, explica.
No answers yet.
Inicia sesión para dejar una respuesta