gpt4 book ai didi

rust - 如何在检查相同值的循环中使用可变捕获变量的闭包?

转载 作者:行者123 更新时间:2023-11-29 08:22:44 25 4
gpt4 key购买 nike

fn main() {
let mut foo = 1;

let mut func = || foo += 1;
while foo < 5 {
func();
}
}
error[E0503]: cannot use `foo` because it was mutably borrowed
--> src/main.rs:5:11
|
4 | let mut func = || foo += 1;
| -- borrow of `foo` occurs here
5 | while foo < 5 {
| ^^^ use of borrowed `foo`

我明白为什么这不起作用,但我正在寻找一种以某种方式绕过借用检查器的方法。有没有办法在这里使用闭包?除了使用函数之外还有其他好的选择吗?我遇到了一种情况,我必须更改几个变量。

最佳答案

您有一个选择是将可变引用传递给闭包,而不是通过环境捕获隐式借用它:

fn main() {
let mut foo = 1;

let func = |foo: &mut i32| *foo += 1;

while foo < 5 {
func(&mut foo);
}
}

playground

关于rust - 如何在检查相同值的循环中使用可变捕获变量的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50611728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com