Pourquoi ne peut-on pas stocker une valeur et une référence à celle-ci dans la même structure en Rust ?
Bonjour à tous ! J'ai commencé à apprendre Rust et j'ai rencontré un problème qui m'a beaucoup intrigué. J'essaie d'écrire une structure qui stocke des données et en même temps une référence à ces données à l'intérieur d'elle-même. Par exemple, je veux créer une structure qui contient une chaîne de caractères et son premier caractère — une référence à cette chaîne.
Voici ce que j'essaie de faire :
```rust
struct MyStruct {
data: String,
first_char: &str, // référence à data
}
fn main() {
let text = String::from("Hello");
let first = &text[..1];
let s = MyStruct { data: text, first_char: first };
println!("{}", s.first_char);
}
```
Le compilateur génère une erreur : `error[E0382]: borrow of moved value: 'text'`. Je comprends que lorsque je déplace `text` dans la structure, je ne peux plus utiliser `first`, car il fait référence à l'ancienne adresse. Mais comment concevoir correctement une telle structure ? Dans d'autres langages, je pouvais tranquillement stocker un objet et un pointeur vers son champ. Pourquoi Rust est-il si strict ? Existe-t-il un moyen de stocker une vale