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

Loops 在FnMut向量中迭代并调用闭包,loops,closures,rust,Loops,Closures,Rust,我有一个类似于以下内容的结构: struct Foo<'a> { callbacks: Vec<&'a FnMut(u32)>, } 我得到这个错误: error: cannot borrow immutable borrowed content `**f` as mutable 我也尝试了iter\u mut(),但我得到了相同的错误。使用可变接收器,因此必须有可变引用才能调用它: struct Foo<'a> { callbac

我有一个类似于以下内容的结构:

struct Foo<'a> {
    callbacks: Vec<&'a FnMut(u32)>,
}
我得到这个错误:

error: cannot borrow immutable borrowed content `**f` as mutable
我也尝试了
iter\u mut()
,但我得到了相同的错误。

使用可变接收器,因此必须有可变引用才能调用它:

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

谢谢。老实说,我曾经试过,但由于另一个错误(现已修复)以及它看起来很奇怪,我产生了怀疑。在哪里可以了解更多关于接收者的信息?Receiver是在
Fn
FnMut
FnOnce
特征的描述中用于
self
参数的名称。您可以阅读中的self参数。好的,让我重新措辞。在闭包的上下文中,什么是
self
?是封闭的环境吗?对不起,我弄糊涂了。对于闭包,是的,self是闭包的上下文。您还可以为任何结构实现
FnMut
trait(尽管它不稳定),在这种情况下,
self
是对结构实例的可变引用,就像在其他trait实现中一样。
struct Foo<'a> {
    callbacks: Vec<&'a mut FnMut(u32)>,
}