我想使用库函数交换片段data
的元素,但由于多个借用而无法工作:
use std::mem;
fn example() {
let mut data = [1, 2, 3];
let i = 0;
let j = 1;
mem::swap(&mut data[i], &mut data[j]);
}
error[E0499]: cannot borrow `data[_]` as mutable more than once at a time
--> src/lib.rs:8:29
|
8 | mem::swap(&mut data[i], &mut data[j]);
| --------- ------------ ^^^^^^^^^^^^ second mutable borrow occurs here
| | |
| | first mutable borrow occurs here
| first borrow later used by call
|
这件事可以手动完成,但我认为每次都使用这段代码并不是最好的方式:
let temp = data[i];
data[i] = data[j];
data[j] = temp;
有没有其他方法可以交换切片中的元素?