gpt4 book ai didi

rust - 防 rust 罩概念

转载 作者:行者123 更新时间:2023-12-03 11:36:29 26 4
gpt4 key购买 nike

我在这里无法理解有关Rust闭包的概念。在我的代码中,默认值为i32。当我创建可变闭包时,它将采用文档中提到的可变引用。
当我在循环中调用inc闭包并尝试在循环内打印count的值时,我会得到可变的借用错误,但是如果我在循环外打印count的值就可以了。即使在循环中,当我在打印宏inc()超出范围之前调用inc()闭包时,为什么也会引发错误。

fn main() {
let mut count = 0;

let mut inc = || {
count += 2;
};

for _index in 1..5 {
inc();
println!("{}", count);
}
}

最佳答案

创建闭包时,它会可变地借用count变量。当可变借位还活着时(包括count变量本身),禁止通过另一个引用访问count变量。当不再使用该闭包时,该闭包将被丢弃,此时它将释放借用,从而可以再次访问count

fn main() {
let mut count = 0;

let mut inc = || {
count +=2;
};
// Now we can't access `count`

for _index in 1..5 {
inc();
// println!("{}", count);
// Here we can't access `count` because it is borrowed mutably by `inc`
}
// Here `inc` is dropped so `count` becomes accessible again
println!("{}", count);
}

关于rust - 防 rust 罩概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65682678/

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