Iterando sobre un vector de referencias mutables a objetos de rasgos

tengo unstruct que contiene referencias mutables a objetos de rasgos:

trait Task {
    fn do_it(&mut self);
}

struct Worker<'a> {
    tasks: Vec<&'a mut Task>,
}

En un método deWorker, Quiero iterar sobre las tareas y llamar a susdo_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();
    }
}

Lamentablemente, el verificador de préstamos no me deja hacerlo:

error[E0389]: cannot borrow data mutably in a `&` reference
  --> src/main.rs:12:27
   |
12 |             self.work_one(*task);
   |                           ^^^^^ assignment into an immutable reference

No puedo hacerWorker genérico porque quiero que contenga tareas de muchos tipos. También necesito tareas para ser mutable. ¿Cómo lo hago en Rust?

Respuestas a la pregunta(2)

Su respuesta a la pregunta