在 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 = vec![0, 1, 2];
let y = x.iter().map(|&e| e as u32).collect();
尽管如此,如果您知道要转换的事物的位模式是相同的(例如,它包装的类型的新类型结构,或在 uint
和 int
之间转换),您可以执行 in- place cast,不会分配新的向量(尽管这意味着旧的 x
无法访问):
let x = [0, 1, 2];
let y: [u32; 3] = unsafe { cast::transmute(x) };
(请注意,这是 unsafe
,可能会导致坏事发生。)
关于arrays - Rust 中的类型转换数组/向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755181/