加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

类型铸造阵列/矢量在锈

发布时间:2020-12-14 17:49:02 所属栏目:Java 来源:网络整理
导读:在Rust中将一种类型的数组或向量转换为另一种类型的惯用方法是什么?期望的效果是 let x = ~[0 as int,1 as int,2 as int];let y = vec::map(x,|e| { e as uint }); 但我不确定是否可以以更简洁的方式实现相同的方式,类似于标量类型转换. 在Rust手册或参考资
在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发生.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读