从 Vec 中删除一系列项目

Alp*_*ack 2 rust

Vec在 Rust 中有 100 个项目,我需要删除索引在 10 到 30 之间的每个项目。一种方法是单独删除每个元素,如下所示:

for i in 10..30 {
    vec.remove(i);
}
Run Code Online (Sandbox Code Playgroud)

但这会导致每个删除的项目都有一个 memcpy,因为每次删除一个元素时,Vec 的其余部分都必须向左移动。如何一次从 Vec 中删除整个范围的项目,以只导致一个 memcpy 的方式?

use*_*342 7

如何一次性从 Vec 中删除一系列项目

使用Vec::drain

vec.drain(10..30);
Run Code Online (Sandbox Code Playgroud)