2013-05-26 43 views
10

在Rust中將一種類型的數組或向量轉換爲另一種類型的慣用方式是什麼?所需的效果是在Rust中輸入數組或向量

let x = ~[0 as int, 1 as int, 2 as int]; 
let y = vec::map(x, |&e| { e as uint }); 

,但我不知道是否相同可以用更簡潔時尚,類似於標量類型強制轉換來實現。

我似乎無法找到鏽手冊或參考中的線索。 TIA。

回答

7

在一般情況下,你會得到最好的是類似於你有什麼(這個分配一個新的向量):

let x = ~[0i, 1, 2]; 
let y = do x.map |&e| { e as uint }; 
// equivalently, 
let y = x.map(|&e| e as uint); 

儘管如此,如果你知道你正在之間鑄造的東西的位模式是相同的(例如一個新類型的結構,它包裝的類型,或鑄造uintint),你可以做一個就地轉換,不會分配一個新的向量(雖然這意味着舊的x不能被訪問):

let x = ~[0i, 1, 2]; 
let y: ~[uint] = unsafe { cast::transmute(x) }; 

(請注意,這是unsafe,並可能導致不好的事情發生。)

+0

謝謝。按照通常的功能方式使用'map'就足夠了。 –