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'を使うことで十分です。 –

関連する問題