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);
}