有没有一种安全的方法可以将 rust 迹中的向量元素左移?(左移两位时,vec![1, 2, 3]
变为vec![3]
).我要处理Copy
种类型,我不想支付比memmove
种更高的罚款.
我发现的唯一解决方案是不安全的:通过ptr::copy
直接使用memmove
.
有没有一种安全的方法可以将 rust 迹中的向量元素左移?(左移两位时,vec![1, 2, 3]
变为vec![3]
).我要处理Copy
种类型,我不想支付比memmove
种更高的罚款.
我发现的唯一解决方案是不安全的:通过ptr::copy
直接使用memmove
.
我会用Vec::drain
.
你可以用一系列你想移除的元素来调用它,然后它会把它们移过go .示例:(playpen)
fn main() {
let mut v = vec![1, 2, 3];
v.drain(0..2);
assert_eq!(vec![3], v);
}
另一个注意事项是:
我要处理
Copy
种类型,我不想支付比memmove
更高的罚款.
值得注意的是,移动是always a memcpy
Rust ,所以Copy
和非Copy
的区别在这里并不重要.如果不是Copy
型的话也一样.