Rust 第二次借锈的问题

Rust 第二次借锈的问题,rust,Rust,最近我从Rust开始做小游戏,不幸的是,我在实现一个简单的机制时遇到了问题,原因是多个可变借用出现了错误,例如,下面的代码在第二个可变借用时出现了问题 struct Margin{ x:f32, y:f32, h:f32, w:f32, } 结构级{ 利润率:Vec, } impl级别{ fn new()->Self{ 水平仪{ 页边距:vec![] } } fn更新(&mut self){ //在每个刻度上添加新的边距 self.margins.push(页边距){ x:0,y:0,w:100

最近我从Rust开始做小游戏,不幸的是,我在实现一个简单的机制时遇到了问题,原因是多个可变借用出现了错误,例如,下面的代码在第二个可变借用时出现了问题

struct Margin{
x:f32,
y:f32,
h:f32,
w:f32,
}
结构级{
利润率:Vec,
}
impl级别{
fn new()->Self{
水平仪{
页边距:vec![]
}
}
fn更新(&mut self){
//在每个刻度上添加新的边距
self.margins.push(页边距){
x:0,y:0,w:100,h:0.5,
});
//在边距上迭代,将每个边距向下移动一点
对于self.margins.iter_mut()枚举()中的(i,m){
m、 y+=1。;
//删除屏幕外的页边距
如果m.y>640{
删除(i);
}
}
}
}
fn main(){
让mut l=Level::new();
l、 更新();
}
错误

   Compiling playground v0.0.1 (/playground)
error[E0499]: cannot borrow `self.margins` as mutable more than once at a time
  --> src/main.rs:31:17
   |
26 |         for (i, m) in self.margins.iter_mut().enumerate() {
   |                       -----------------------------------
   |                       |
   |                       first mutable borrow occurs here
   |                       first borrow later used here
...
31 |                 self.margins.remove(i);
   |                 ^^^^^^^^^^^^ second mutable borrow occurs here
Vec
上找到了有用的方法,代码固定如下:

struct Margin{
x:f32,
y:f32,
h:f32,
w:f32,
}
结构级{
利润率:Vec,
}
impl级别{
fn new()->Self{
水平仪{
页边距:vec![]
}
}
fn更新(&mut self){
//在每个刻度上添加新的边距
self.margins.push(页边距){
x:0,y:0,h:100,w:0.5,
});
//在边距上迭代,将每个边距向下移动一点
对于m in self.margins.iter_mut(){
m、 y+=1。;
}
//仅保留y小于640的元素。
自边距保留(|v | v.y<640.);
}
}
fn main(){
让mut l=Level::new();
l、 更新();
}
根据前面的答案回答