繁体   English   中英

如何在Rust中左移一个向量的元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM