如何实现修改向量的多个元素的Rust函数?

时间:2017-02-20 14:04:39

标签: loops rust borrow-checker

我有这段代码:

struct Physical;

fn collision(a: &mut Physical, b: &mut Physical) {
    //accelerate a and b depending on their values
}

fn main_loop(vec: &mut Vec<Physical>) {
    for i in 0..vec.len() {
        for j in i+1..vec.len() {
            collision(&mut vec[i], &mut vec[j]);
        }
    }
}

fn main() {
    let mut vec = vec![Physical, Physical, Physical];
    loop {
        main_loop(&mut vec);
    }
}

这不能编译,因为可变引用都在同一个向量中。

可以更改collision以获取索引和可变向量,但它看起来很难看。我还想稍后更改Container类型以使碰撞更有效。我甚至可能想为我的对象使用多个容器,所以这不是一个选项。

如何以最佳方式完成?

0 个答案:

没有答案