fn main() {
let mut foo = 1;
let mut func = || foo += 1;
while foo < 5 {
func();
}
}
Run Code Online (Sandbox Code Playgroud)
fn main() {
let mut foo = 1;
let mut func = || foo += 1;
while foo < 5 {
func();
}
}
Run Code Online (Sandbox Code Playgroud)
我明白为什么这不起作用,但我正在寻找一种以某种方式绕过借用检查器的方法。有没有办法在这里使用闭包?除了使用函数之外,还有其他好的选择吗?我遇到了必须更改几个变量的情况。
您拥有的一种选择是将可变引用传递给闭包,而不是通过环境捕获隐式借用它:
fn main() {
let mut foo = 1;
let func = |foo: &mut i32| *foo += 1;
while foo < 5 {
func(&mut foo);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |