类型铸造阵列/矢量在锈

在Rust中将一种类型的数组或向量转换为另一种类型的惯用方法是什么?期望的效果
let x = ~[0 as int,1 as int,2 as int];
let y = vec::map(x,|&e| { e as uint });

但我不确定是否可以以更简洁的方式实现相同的方式,类似于标量类型转换.

在Rust手册或参考资料中,我似乎找不到线索. TIA.

解决方法

一般来说,你将要获得的最好的是与你所拥有的一样(这分配一个新的向量):
let x = ~[0i,1,2];
let y = do x.map |&e| { e as uint };
// equivalently,let y = x.map(|&e| e as uint);

虽然,如果你知道你所投射的东西的位模式是相同的(例如,它包含的类型的newtype结构体,或者在uint和int之间的转换),你可以做一个就地转换,不会分配一个新的向量(虽然这意味着旧的x不能访问):

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

(请注意,这是不安全的,可能导致Bad Things发生.)

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...