2017-07-25 66 views
0

我想換一個向量如何交換矢量中的非可複製元素?

let mut v_sa: Vec<String> = vec![]; 
... 
let temp_a = v_sa_ib[j]; 
v_sa_ib[j] = v_sa_ib[j+1]; 
v_sa_ib[j+1] = temp_a; 

它與整數String元素,但不是String秒。我也試圖創建第二個向量temp_b(相同類型的temp_a)並填充它而不是交換,但我總是有同樣的錯誤:the type of this value must be known in this context

我該如何解決?

+0

如何處理字符串引用的向量並只更改引用? – Netwave

+0

已嘗試但未成功 – PaulStrom

+0

錯誤:無法移出索引內容 – PaulStrom

回答

-1

可以使用swap() method of Vec交換直接在兩個元素:

v_sa_ib(j, j+1); 

還有一個名爲std::mem::swap一個通用的交換功能,但它是很難在這裏使用,因爲獲得兩個可變引用的相同Vec兩種不同元素是相當的參與。

它使用整數的原因是整數實現了Copy特性,所以Rust可以自動創建新的副本。