【发布时间】:2015-04-10 20:59:46
【问题描述】:
有没有一种好方法可以将大小为S 的Vec<T> 转换为[T; S] 类型的数组?具体来说,我使用的函数将 128 位散列返回为 Vec<u8>,其长度始终为 16,我想将散列作为 [u8, 16] 处理。
是否有类似于as_slice 方法的内置方法可以满足我的需求,或者我应该编写自己的函数来分配一个固定大小的数组,遍历复制每个元素的向量,然后返回数组?
【问题讨论】:
-
只有一行。使用 itertools:Itertools; my_array.iter_mut().set_from(my_vector.iter().cloned());
-
@donbright 这不会导致内存分配吗?
-
很抱歉,我不能 100% 确定您的意思....您可以在此处查看生成的汇编程序(单击 ... 运行并点击 ASM):play.rust-lang.org/…
-
现在回过头来看,根据预期的平台,用户可能能够使用不安全的转换,这在理论上会消除复制(“内存分配”?)..并允许使用字节原样
标签: rust