如何在Rust中左移一个向量的元素?

Doe*_*Doe 9 rust

有没有一种安全的方法来转换Rust中向量的左移元素?(当左移两个地方时vec![1, 2, 3]变成vec![3]).我正在处理Copy类型,而且我不想支付比我更高的罚款memmove.

我发现的唯一解决方案是不安全:memmove直接使用via ptr::copy.

Ste*_*nik 12

我会用Vec::drain.

您可以使用一系列要删除的元素来调用它,之后它会将它们移除.示例:(游戏围栏)

fn main() {
    let mut v = vec![1, 2, 3];

    v.drain(0..2);

    assert_eq!(vec![3], v);
}
Run Code Online (Sandbox Code Playgroud)

另一个说明:

我正在处理Copy类型,而且我不想支付比我更高的罚款memmove.

值得注意的是,移动是始终一个memcpy拉斯特,所以CopyVS非Copy区别此处无关紧要.如果类型没有,那就一样了Copy.