Avatar ·

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