2013-05-26 10 views
10

Rust'taki dizileri veya vektörleri bir türden diğerine dönüştürmenin deyimsel yolu ne olurdu? İstenen etkiType-casting dizileri/vektörleri Rust içinde

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

ama aynı skaler tip-atmalarını benzer daha özlü biçimde, elde edilebilir olup olmadığından emin değilim.

Rust el kitabında ipucu bulmakta veya referansta başarısız gibi görünüyor. TIA. Genelde

cevap

7

, sen alacaksın iyi (bu yeni vektör ayırır) ne almayı benzer:

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

rağmen size arasına döküm şeylerin bit desenleri biliyorsanız aynıdır (örtüldüğü türe yeni bir tür yapı veya uint ve int arasında döküm), yeni bir vektör ayırmayacak bir yerinde döküm gerçekleştirebilirsiniz (eski x erişilemez):

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

(Bu unsafe olduğunu unutmayın ve Kötü şeyler olmasına neden olabilir.)

+0

Teşekkür ederim. Her zamanki işlevsel yoldan gitmek ve 'harita'yı kullanmak yeterince iyi olacaktır. –

İlgili konular