Avatar ·

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. <<>>

Problema: referência imutável no método