Por que não é possível armazenar um valor e uma referência a ele na mesma estrutura em Rust?
Olá a todos! Comecei a estudar Rust e me deparei com um problema que não consigo resolver há vários dias.
Estou escrevendo um parser para arquivos de configuração. Tenho uma estrutura `Parser` que lê dados de uma string e fornece um iterator sobre as palavras. Aqui está o código simplificado:
```rust
struct Parser {
data: String,
words: Vec<&str>, // referências 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 } // erro!
}
}
```
O compilador emite o erro: `cannot move out of 'data' because it is borrowed`. Eu entendo que `words` contém referências a `data`, mas `data` e `words` estão na mesma estrutura! O Rust não deveria entender que elas vivem juntas?
Tentei várias opções: usar `Rc`, mudar a ordem dos campos, adicionar lifetime — nada funciona. Talvez eu esteja projetando a estrutura de forma errada? Como armazenar em Rust uma