在FnMut向量中迭代并调用闭包

时间:2016-07-12 14:31:00

标签: loops closures rust

我有struct与此相似:

struct Foo<'a> {
    callbacks: Vec<&'a FnMut(u32)>,
}

我想调用每个回调,但我的尝试不起作用:

fn foo(&mut self) {
    for f in &mut self.callbacks {
        (*f)(0);
    }
}

我收到此错误:

error: cannot borrow immutable borrowed content `**f` as mutable

我也试过了iter_mut(),但我得到了同样的错误。

1 个答案:

答案 0 :(得分:5)

FnMut需要一个可变接收器,所以你必须有一个可变引用来调用它:

struct Foo<'a> {
    callbacks: Vec<&'a mut FnMut(u32)>,
}