在锈蚀中,向量的左移位元素有安全的方法吗?(当左移两个位置时,vec![1, 2, 3]变成vec![3] )。我正在处理Copy类型,我不想支付比memmove更高的罚款。
我找到的唯一解决方案是不安全的:直接通过memmove使用ptr::copy。
发布于 2016-07-06 15:15:43
我会用Vec::drain。
您可以使用要删除的元素范围来调用它,然后它会将它们转移到其他元素上。示例:(playpen)
fn main() {
let mut v = vec![1, 2, 3];
v.drain(0..2);
assert_eq!(vec![3], v);
}另一个注意事项是:
我正在处理
Copy类型,我不想支付比memmove更高的罚款。
值得注意的是,移动在锈蚀中始终是一个memcpy,所以Copy与非Copy的区别在这里并不重要。如果类型不是Copy的话,情况也是一样的。
https://stackoverflow.com/questions/38227455
复制相似问题