有没有一种安全的方法可以在Rust中将向量的元素左移?(当左移两个位置时vec![1, 2, 3]
变为vec![3]
)。我正在处理Copy
类型,并且我不想付出比使用更高的罚款memmove
。
我发现的唯一解决方案是不安全的:memmove
直接通过来使用ptr::copy
。
我会用Vec::drain
。
您可以使用要删除的一系列元素来调用它,然后将其转移。范例:(playpen)
fn main() {
let mut v = vec![1, 2, 3];
v.drain(0..2);
assert_eq!(vec![3], v);
}
另一注:
我正在处理
Copy
类型,并且我不想付出比使用更高的罚款memmove
。
值得一提的是,在Rust中,移动始终是一个memcpy
问题,因此这里的Copy
vs无Copy
区别无关紧要。如果类型不是,那将是相同的Copy
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句