有没有一种安全的方法可以在 Rust 中左移向量的元素?(左移两个位置时vec![1, 2, 3]
变为)。vec![3]
我正在处理Copy
类型,我不想支付比使用memmove
.
我发现的唯一解决方案是不安全的:memmove
直接通过ptr::copy
.
我会用Vec::drain
.
您可以使用一系列要删除的元素来调用它,然后它会转移它们。示例:(游戏围栏)
fn main() {
let mut v = vec![1, 2, 3];
v.drain(0..2);
assert_eq!(vec![3], v);
}
另一个注意事项:
我正在处理
Copy
类型,我不想支付比使用memmove
.
值得注意的是,在 Rust 中移动始终是一个memcpy
,所以Copy
vs 非Copy
区别在这里并不重要。如果类型不是,那将是相同的Copy
。