微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

类型铸造阵列/矢量在锈

在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发生.)

原文地址:https://www.jb51.cc/java/123807.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐