Итерация по вектору изменяемых ссылок на объекты признаков

у меня естьstruct который содержит изменяемые ссылки на объекты признаков:

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

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

В методеWorkerХочу перебрать задачи и вызвать ихdo_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();
    }
}

К сожалению, проверка заимствования не позволяет мне сделать это:

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

Я не могу сделатьWorker универсальный, потому что я хочу, чтобы он содержал задачи разных типов. Мне также нужно, чтобы задачи были изменяемыми. Как мне это сделать в Rust?

Ответы на вопрос(2)

Ваш ответ на вопрос