有没有一种安全的方法来转换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.