Ü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?