Como alterar um campo de struct a partir de um método em Rust?
Olá, colegas! Acabei de começar a estudar Rust e me deparei com um problema que parece simples, mas não consigo resolver. Tenho uma struct `Counter` que armazena um número. Quero escrever um método `increment` que aumenta esse número em 1. Mas o compilador dá um erro, e não entendo por quê.
Aqui está meu código:
```rust
struct Counter {
value: i32,
}
impl Counter {
fn increment(&self) {
self.value += 1; // Erro!
}
}
fn main() {
let mut counter = Counter { value: 0 };
counter.increment();
println!("{}", counter.value);
}
```
O compilador diz: `cannot borrow `self.value` as mutable, as `self` is a `&` reference`. Eu pensei que se declarasse `counter` como `mut`, poderia alterar seus campos dentro dos métodos. Mas, aparentemente, não é assim. Como alterar corretamente um campo de struct a partir de um método? É necessário declarar o método de alguma forma especial? Agradeço explicações com exemplos.
<<>>