【发布时间】:2016-08-27 17:55:43
【问题描述】:
我有一个 struct 持有对 trait 对象的可变引用:
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 中做到这一点?
【问题讨论】:
标签: rust borrow-checker