leetcode_rust/
move_zeroes.rs1#![allow(dead_code)]
2
3pub fn move_zeroes(nums: &mut Vec<i32>) {
4 let mut i = 0;
5 let mut j = 0;
6 while i < nums.len() {
7 if nums[i] != 0 {
8 nums.swap(i, j);
9 j += 1;
10 }
11 i += 1;
12 }
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18
19 #[test]
20 fn test1() {
21 let mut nums = vec![0, 1, 0, 3, 12];
22 move_zeroes(&mut nums);
23 assert_eq!(nums, vec![1, 3, 12, 0, 0]);
24
25 let mut nums = vec![1];
26 move_zeroes(&mut nums);
27 assert_eq!(nums, vec![1]);
28
29 let mut nums = vec![1, 0];
30 move_zeroes(&mut nums);
31 assert_eq!(nums, vec![1, 0]);
32
33 let mut nums = vec![2, 1];
34 move_zeroes(&mut nums);
35 assert_eq!(nums, vec![2, 1]);
36 }
37}