相关疑难解决方法(0)

循环中的多个可变引用

我正在尝试更详细地了解 Rust 的所有权和生命周期,但我对这段代码感到非常困惑:

let mut lst = vec![1, 2, 3];
let mut x = &mut 0;

for value in &mut lst {
    *value += 1;
    *x += 1;
    x = value;
}

*x += 1;
println!("{:?}", &lst);
Run Code Online (Sandbox Code Playgroud)

据我了解,Rust 不允许对任何值有多个可变引用,并且对向量中元素的可变引用也会借用向量本身。因此,不可能同时对向量中的两个元素进行可变引用。

但在上面的代码中,循环体存储了对循环外部lst元素的可变引用。x然后,在下一次迭代中,它需要另一个对 中不同元素的可变引用lst,同时为我提供对列表中两个元素的两个可变引用

所以我的问题是:为什么允许这样做?

lifetime ownership rust

2
推荐指数
1
解决办法
4428
查看次数

标签 统计

lifetime ×1

ownership ×1

rust ×1