Avatar ·

¿Por qué no se puede almacenar un valor y una referencia a él en la misma estructura en Rust?

¡Hola a todos! Empecé a estudiar Rust y me encontré con un problema que no puedo resolver desde hace varios días. Estoy escribiendo un parser para archivos de configuración. Tengo una estructura `Parser` que lee datos de una cadena y proporciona un iterador sobre palabras. Aquí está el código simplificado: ```rust struct Parser { data: String, words: Vec<&str>, // referencias a data } impl Parser { fn new(input: &str) -> Self { let data = input.to_string(); let words: Vec<&str> = data.split_whitespace().collect(); Parser { data, words } // ¡error! } } ``` El compilador da el error: `cannot move out of 'data' because it is borrowed`. Entiendo que `words` contiene referencias a `data`, ¡pero `data` y `words` están en la misma estructura! ¿No debería Rust entender que viven juntos? He probado diferentes opciones: usar `Rc`, cambiar el orden de los campos, agregar lifetime — nada ayuda. ¿Quizás estoy diseñando la estructura incorrectamente? ¿Cómo se almacena en Rust una