¿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
No answers yet.
Inicia sesión para dejar una respuesta