[英]How are elements of a vector left-shifted in Rust?
有没有一种安全的方法来转换Rust中向量的左移元素? ( vec![1, 2, 3]
成为vec![3]
左移两个地方)。 我正在处理Copy
类型,我不想支付高于我对memmove
的惩罚。
我发现的唯一解决方案是不安全:直接通过ptr::copy
使用memmove
。
我会用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 non Copy
区别并不重要。 如果类型不是Copy
它将是相同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.