如何在循环内交换 Vec 的两个索引的内容?

fre*_*k99 2 rust

我正在尝试交换循环内的元素。

fn foo(nums: &mut Vec<i32>) {
  let mut i: usize = 0;
  for (j, n) in nums.iter_mut().enumerate() {
    if n != &0 {
      // swap nums[i] and nums[j];
      i = i + 1;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但我不断收到相同的错误(同时不能多次借用可变 nums)。我究竟做错了什么?

Đor*_*jić 5

也许这不完全是您想要的,但它可能会有所帮助。

fn main() {
    let mut vec = vec![1, 0, 3, 4];
    let mut i = 0;

    for j in 0..vec.len() {
        if vec[j] != 0 {
            vec.swap(i, j);
            i = i + 1;
        }
    }

    println!("{:?}", vec);
}
Run Code Online (Sandbox Code Playgroud)

铁锈游乐场