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?

questionAnswers(2)

yourAnswerToTheQuestion