Über einen Vektor veränderlicher Verweise auf Merkmalsobjekte iterieren

Ich habe einstruct enthält veränderbare Verweise auf Merkmalsobjekte:

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

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

In einer Methode vonWorker, Ich möchte die Aufgaben durchlaufen und ihr @ aufrufdo_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();
    }
}

Sadly, der Leih-Checker lässt mich das nicht machen:

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

Ich kann nicht machenWorker generic, weil ich möchte, dass es Aufgaben von vielen Arten enthält. Ich brauche auch Aufgaben, um wandelbar zu sein. Wie mache ich das in Rust?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage