Vector 向量的元素是如何左移的?
是否有一种安全的方法来左移生锈中向量的元素?(Vector 向量的元素是如何左移的?,vector,rust,memmove,Vector,Rust,Memmove,是否有一种安全的方法来左移生锈中向量的元素?(vec![1,2,3]左移两位时变为vec![3])。我处理的是Copy类型,我不想支付比memmove更高的罚款 我发现的唯一解决方案是不安全的:直接通过ptr::copy使用memmove 您可以使用一系列要删除的元素来调用它,然后它会将它们移到另一个位置。例如:() 另一项说明: 我处理的是Copy类型,我不想支付比memmove更高的罚款 值得注意的是,在Rust中,移动始终是memcpy,因此Copy与非Copy的区别在这里并不重要。如果这
vec![1,2,3]
左移两位时变为vec![3]
)。我处理的是Copy
类型,我不想支付比memmove
更高的罚款
我发现的唯一解决方案是不安全的:直接通过ptr::copy
使用memmove
您可以使用一系列要删除的元素来调用它,然后它会将它们移到另一个位置。例如:()
另一项说明:
我处理的是Copy
类型,我不想支付比memmove
更高的罚款
值得注意的是,在Rust中,移动始终是memcpy
,因此Copy
与非Copy
的区别在这里并不重要。如果这些类型不是Copy
,那就一样了
fn main() {
let mut v = vec![1, 2, 3];
v.drain(0..2);
assert_eq!(vec![3], v);
}