我正在尝试从数组中删除一个元素:
pub fn update(arr: &mut Vec<Pipe>) {
// move pipes
for pipe in arr.iter_mut() { //first mutable borrow occurs here
pipe.pos.x -= 2.;
if pipe.pos.x < 20. {
arr.remove(0); //seconds mutable borrow
}
}
}
错误:
cannot borrow `*arr` as mutable more than once at a time
second mutable borrow occurs here
1条答案
按热度按时间piok6c0g1#
处理新创建的阵列副本。
为此,
Pipe
类型必须是可克隆的:使用user1937198 hint,你可以执行以下两步解决方案--首先丢弃少于20个管道,然后进行迭代:
两种解决方案都假定必须删除当前测试的
Pipe
,而不是第一个。