首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量的元素在锈蚀中如何左移?

向量的元素在锈蚀中如何左移?
EN

Stack Overflow用户
提问于 2016-07-06 15:09:16
回答 1查看 2.4K关注 0票数 12

在锈蚀中,向量的左移位元素有安全的方法吗?(当左移两个位置时,vec![1, 2, 3]变成vec![3] )。我正在处理Copy类型,我不想支付比memmove更高的罚款。

我找到的唯一解决方案是不安全的:直接通过memmove使用ptr::copy

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 15:15:43

我会用Vec::drain

您可以使用要删除的元素范围来调用它,然后它会将它们转移到其他元素上。示例:(playpen)

代码语言:javascript
复制
fn main() {
    let mut v = vec![1, 2, 3];

    v.drain(0..2);

    assert_eq!(vec![3], v);
}

另一个注意事项是:

我正在处理Copy类型,我不想支付比memmove更高的罚款。

值得注意的是,移动在锈蚀中始终是一个memcpy,所以Copy与非Copy的区别在这里并不重要。如果类型不是Copy的话,情况也是一样的。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38227455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档