Iterando sobre um Vetor de Referências Mutáveis para Objetos de Caracteres
eu tenho umstruct
que contém referências mutáveis para objetos de características:
trait Task {
fn do_it(&mut self);
}
struct Worker<'a> {
tasks: Vec<&'a mut Task>,
}
Em um método deWorker
, Quero iterar sobre as tarefas e chamar suado_it
:
impl<'a> Worker<'a> {
pub fn work(&mut self) {
for task in self.tasks.iter() {
self.work_one(*task);
}
}
fn work_one(&self, task: &mut Task) {
task.do_it();
}
}
Infelizmente, o verificador de empréstimo não me deixa fazer isso:
error[E0389]: cannot borrow data mutably in a `&` reference
--> src/main.rs:12:27
|
12 | self.work_one(*task);
| ^^^^^ assignment into an immutable reference
Eu não posso fazerWorker
genérico porque eu quero realizar tarefas de vários tipos. Eu também preciso que as tarefas sejam mutáveis. Como faço em Rust?