Pourquoi ne peut-on pas stocker une valeur et une référence à celle-ci dans une même structure en Rust ?
Bonjour à tous ! J'ai commencé à apprendre Rust et je suis tombé sur un problème que je n'arrive pas à résoudre depuis plusieurs jours.
J'écris un analyseur pour des fichiers de configuration. J'ai une structure `Parser` qui lit les données d'une chaîne et fournit un itérateur sur les mots. Voici le code simplifié :
```rust
struct Parser {
data: String,
words: Vec<&str>, // références à data
}
impl Parser {
fn new(input: &str) -> Self {
let data = input.to_string();
let words: Vec<&str> = data.split_whitespace().collect();
Parser { data, words } // erreur !
}
}
```
Le compilateur donne l'erreur : `cannot move out of 'data' because it is borrowed`. Je comprends que `words` contient des références à `data`, mais `data` et `words` sont dans la même structure ! Rust ne devrait-il pas comprendre qu'elles vivent ensemble ?
J'ai essayé différentes approches : utiliser `Rc`, changer l'ordre des champs, ajouter une durée de vie — rien n'aide. Peut-être que je conçois mal la structure ? Comment stocker dans Rust une