funcremoveElement(nums []int, val int)int { for i := 0; i < len(nums); i++ { if nums[i] == val { nums = append(nums[:i], nums[i+1:]...) i-- } } returnlen(nums)
}
Rust版本
下面这种写法编译无法通过:
1 2 3 4 5 6 7 8 9 10
pubfnremove_element(nums: &mutVec<i32>, val: i32) ->i32 { foriin0..nums.len() { if nums[i] == val { nums.remove(i); i = i - 1; } }
return nums.len() asi32; }
error[E0384]: cannot assign twice to immutable variable i
在 Rust 中,for 循环中的循环变量是不可变的,因此不能直接修改 i 的值。如果想在循环中修改 i 的值,可以改用 while 循环,并手动更新 i 的值。以下是一个示例的实现: