Avatar ·

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