10
在Rust中將一種類型的數組或向量轉換爲另一種類型的慣用方式是什麼?所需的效果是在Rust中輸入數組或向量
let x = ~[0 as int, 1 as int, 2 as int];
let y = vec::map(x, |&e| { e as uint });
,但我不知道是否相同可以用更簡潔時尚,類似於標量類型強制轉換來實現。
我似乎無法找到鏽手冊或參考中的線索。 TIA。
在Rust中將一種類型的數組或向量轉換爲另一種類型的慣用方式是什麼?所需的效果是在Rust中輸入數組或向量
let x = ~[0 as int, 1 as int, 2 as int];
let y = vec::map(x, |&e| { e as uint });
,但我不知道是否相同可以用更簡潔時尚,類似於標量類型強制轉換來實現。
我似乎無法找到鏽手冊或參考中的線索。 TIA。
在一般情況下,你會得到最好的是類似於你有什麼(這個分配一個新的向量):
let x = ~[0i, 1, 2];
let y = do x.map |&e| { e as uint };
// equivalently,
let y = x.map(|&e| e as uint);
儘管如此,如果你知道你正在之間鑄造的東西的位模式是相同的(例如一個新類型的結構,它包裝的類型,或鑄造uint
和int
),你可以做一個就地轉換,不會分配一個新的向量(雖然這意味着舊的x
不能被訪問):
let x = ~[0i, 1, 2];
let y: ~[uint] = unsafe { cast::transmute(x) };
(請注意,這是unsafe
,並可能導致不好的事情發生。)
謝謝。按照通常的功能方式使用'map'就足夠了。 –