Avatar ·

Comment modifier un champ de structure à partir d'une méthode en Rust ?

Bonjour, collègues ! Je viens de commencer à apprendre Rust et j'ai rencontré un problème qui semble simple, mais je n'arrive pas à le résoudre. J'ai une structure `Counter` qui stocke un nombre. Je veux écrire une méthode `increment` qui augmente ce nombre de 1. Mais le compilateur génère une erreur, et je ne comprends pas pourquoi. Voici mon code : ```rust struct Counter { value: i32, } impl Counter { fn increment(&self) { self.value += 1; // Erreur ! } } fn main() { let mut counter = Counter { value: 0 }; counter.increment(); println!("{}", counter.value); } ``` Le compilateur dit : `cannot borrow `self.value` as mutable, as `self` is a `&` reference`. Je pensais que si je déclarais `counter` comme `mut`, je pourrais modifier ses champs à l'intérieur des méthodes. Mais apparemment, ce n'est pas le cas. Comment modifier correctement un champ de structure à partir d'une méthode ? Faut-il déclarer la méthode d'une manière particulière ? Je serais reconnaissant pour une explication avec des exemples. <<>>

Problème : référence immuable dans la méthode