我有一个迭代:
fn foo<F>(mut callback: F)
where F: Fnmut(MyStruct)
{
// produce an instance of MyStruct
callback(my_struct);
for ... { // some conditions
foo(callback)
}
}
关闭可能是:
let my_vec = vec![];
let mut callback = |my_struct: MyStruct| {my_vec.push(my_struct);};
foo(callback);
在我的for
循环中,callback
的所有权被移动,因此上面的代码不起作用。我尝试将参数替换为mut callback: &mut F
,并使用foo(&mut callback)
,但该参数仍然无法正常工作,并且编译器会说“溢出评估需求”。