leetcode_rust/
remove_element.rs

1#![allow(dead_code)]
2
3pub fn remove_element(nums: &mut Vec<i32>, val: i32) -> i32 {
4    let mut i = 0;
5    let mut j = 0;
6    while i < nums.len() {
7        if nums[i] != val {
8            nums[j] = nums[i];
9            j += 1;
10        }
11        i += 1;
12    }
13
14    j as i32
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    #[test]
22    fn test1() {
23        let mut nums = vec![0, 1, 2, 2, 3, 0, 4, 2];
24        let len = remove_element(&mut nums, 2) as usize;
25        nums.resize(len, 0);
26        assert_eq!(nums, vec![0, 1, 3, 0, 4]);
27    }
28}