rust 如何创建一个可变嵌套迭代器?

pbpqsu0x  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(80)

我想比较数组中的每个元素和同一个数组中的其他元素,如果满足某些条件,两个元素的属性都需要更新。在我所知道的任何其他编程语言中,我会用两个嵌套迭代器来实现这一点。
在Rust中,嵌套使用“iter_mut”会导致错误“cannot borrow balls as mutable more than once at a time”。
这是我的“球”的例子:

struct Ball {
    pub x: f64,
    pub y: f64,
}

let mut balls: Vec<Ball> = vec![Ball {x: 10.0, y:10.0}, Ball {x: 10.0, y:10.0}];

for ball in balls.iter_mut() {
    for ball2 in balls.iter_mut() { //this second iterator raises the error

        if ball.x == ball2.x { //any test
            ball.x = 0.5; //any value change
            ball2.x = 0.5;//any value change
        }

    }
}

字符串
在Rust中实现这一点的最佳方法是什么?

vltsax25

vltsax251#

在Rust中实现这一点的最佳方法是什么?
最简单的方法是使用索引:

for i in 0..balls.len() {
    for j in 0..balls.len() {
        if balls[i].x == balls[j].x {
            balls[i].x = 0.5;
            balls[j].x = 0.5;
        }
    }
}

字符串
Playground

相关问题