¿Por qué están prohibidas las estructuras de datos recursivas en Rust y cómo crearlas correctamente?
¡Hola, colegas! Empecé a estudiar Rust y me encontré con un error que no entiendo. Quiero hacer una lista enlazada simple, como en C o Python:
```rust
struct Node {
value: i32,
next: Node, // error: recursive type `Node` has infinite size
}
```
El compilador dice: "recursive type `Node` has infinite size". Entiendo que Rust es estricto con los tamaños de los tipos, pero ¿por qué es esto un problema? En C puedo hacer `struct Node { int value; struct Node* next; }` — ahí hay un puntero y funciona. En Python incluso se puede almacenar un objeto dentro de sí mismo.
¿Por qué Rust prohíbe tal recursión? ¿Y cómo entonces hacer listas, árboles y otras estructuras recursivas? He oído sobre `Box`, pero no entiendo por qué resuelve el problema. Explíquenlo, por favor, en palabras simples con ejemplos. ¡Gracias de antemano!
<<>>
¿Por qué Rust prohíbe la recursión directa?
El problema es que Rust necesita saber el tamaño exacto de cada tipo en tiempo de compilación. Cuando escribes next: Node, el compilador intenta calcular