Как поменять местами содержимое двух индексов Ve c внутри al oop? - PullRequest
2 голосов
/ 05 апреля 2020

Я пытаюсь поменять местами элементы внутри al oop.

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;
    }
  }
}

Но я продолжаю получать одну и ту же ошибку (при этом я не могу брать изменяемые числа несколько раз). Что я делаю не так?

1 Ответ

5 голосов
/ 05 апреля 2020

Возможно, это не совсем то, что вы хотите, но это может помочь.

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);
}

Rust Playground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...