Avatar ·

Gestión del tiempo de vida del garbage collector en Rust: cómo implementar recolección de basura para objetos de larga duración

¡Hola, colegas! Soy nuevo en Rust y estoy tratando de entender la gestión de memoria. Vengo de Java, donde el garbage collector resuelve todos los problemas de memoria, y ahora me cuesta acostumbrarme al sistema de ownership y lifetimes. Necesito implementar una estructura de datos donde los objetos puedan vivir mucho tiempo y referenciarse entre sí. Por ejemplo, un grafo con referencias cíclicas. En Java simplemente crearía un `HashMap>` y lo olvidaría. En Rust, el compilador se queja de los borrows y lifetimes. Estoy intentando hacer algo como: ```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); } ``` El compilador da errores sobre lifetimes y borrows. Entiendo que es por las reglas de ownership, pero ¿cómo implemento garbage collection para estos casos? ¿Necesito usar `Rc` y `Re