我有一个非平凡类型的Vec
,我确定它的大小。我需要将其转换为固定大小的数组。理想情况下,我希望能够:
- 不复制数据-我想使用
Vec
- 不预先初始化数组为零数据,因为这将浪费CPU周期。
问题以代码形式编写:
struct Point {
x: i32,
y: i32,
}
fn main() {
let points = vec![
Point { x: 1, y: 2 },
Point { x: 3, y: 4 },
Point { x: 5, y: 6 },
];
// I would like this to be an array of points
let array: [Point; 3] = ???;
}
这似乎是一个微不足道的问题,但我无法在 Vec
文档、Rust 书籍的切片部分或通过谷歌搜索找到令人满意的解决方案。唯一的方法是首先用零数据初始化数组,然后从 Vec
复制所有元素,但这不符合我的要求。
[T; 3]
这样的单个数组长度,会有简单的解决方案。 - bluss