// Panic if no such element is found
vec.remove(vec.iter().position(|x| *x == needle).expect("needle not found"));
// Ignore if no such element is found
if let Some(pos) = vec.iter().position(|x| *x == needle) {
vec.remove(pos);
}
你当然可以处理 None的情况下,只要你喜欢(恐慌和忽略不是唯一的可能性)。
删除等于 needle的 最后元素
与第一个元素类似,但是用 rposition替换 position。
删除等于 needle的 所有元素
vec.retain(|x| *x != needle);
或者 swap_remove
请记住,remove的运行时为 O (n) ,因为索引之后的所有元素都需要移位。Vec::swap_remove的运行时为 O (1) ,因为它将要删除的元素与最后一个元素交换。如果元素的顺序在您的情况下并不重要,那么使用 swap_remove而不是 remove!