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