簡體   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