Итерация по вектору изменяемых ссылок на объекты признаков
у меня есть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?