我正在尝试编写一段代码,借用向量最后一个成员的可变副本,然后更改向量的另一个成员。检查向量是否有超过 2 个元素,因此同一元素没有变化。
pub fn adjust(&mut self) {
if self.vec.len() < 2 {
return;
}
let vec_last = self.vec.last_mut().unwrap();
let mut iter = vec_last.iter_mut();
while let Some(i) = iter.next() {
self.vec[0].push(i.clone());
}
}
编译器产生预期的错误
cannot borrow self.vec as mutable more than once at a time
。
有没有办法在不触发错误的情况下进行此类更改?
干杯
您可以分成两个可变切片:
pub fn adjust(&mut self) {
if self.vec.len() < 2 {
return;
}
let (first, rest) = self.vec.split_first_mut().unwrap();
let last = rest.last().unwrap();
for x in last {
first.push(x.clone());
}
}