我有这段代码:
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
类型以使碰撞更有效。我甚至可能想为我的对象使用多个容器,所以这不是一个选项。
如何以最佳方式完成?