arrays - Rust 中的类型转换数组/向量

标签 arrays vector 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 = vec![0, 1, 2];
let y = x.iter().map(|&e| e as u32).collect();

尽管如此,如果您知道要转换的事物的位模式是相同的(例如,它包装的类型的新类型结构,或在 uintint 之间转换),您可以执行 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/

相关文章:

java - 使用Java 8的lambda表达式,将List<Byte>转换为原始byte[],无需外部库

python - 使用 OpenCV 在 Python 中反转图像

r - 如何根据逻辑从数值矩阵生成向量或因子(无 for 循环)

vector - 在不改变向量的情况下返回 Rust 中向量的最后 n 个元素

R通过POSIXct函数中的tz传递字符串向量

azure - Rust:从 Azure 事件中心接收 AMQP 消息

java - 尝试使用 TextWatcher 创建的数组会导致错误并强制关闭

C++ 将两个 int 数组连接成一个更大的数组

string - 用同一向量 Rust 中的另一个字符串扩展一个字符串

rust - 我如何绑定(bind) Higher Rank Trait Bound 生命周期?