Avatar ·

如何根据值从 Rust 的 vector 中删除元素?

大家好!我是 Rust 新手,正在尝试理解 vector。我有一个 vector,例如 `let mut numbers = vec![1, 2, 3, 4, 5];`,我想根据值(而不是索引)删除其中的元素。假设我想删除数字 `3`。在其他语言中,比如 Python,我会写 `numbers.remove(3)` 或 `numbers = [x for x in numbers if x != 3]`。但在 Rust 中,这更复杂。 我尝试使用 `remove()` 方法,但它接受索引而不是值。于是我尝试写一个循环: ```rust let mut numbers = vec![1, 2, 3, 4, 5]; let target = 3; for (i, &val) in numbers.iter().enumerate() { if val == target { numbers.remove(i); break; } } ``` 但编译器报了一个关于借用检查器(borrow checker)的错误。我了解到在 Rust 中,不能在迭代集合时修改它。如何正确地根据值删除元素?如果 vector 中有多个相同的元素怎么办?例如 `vec![1, 2, 3, 3, 4]`——只需要删除第一个匹配项。