<分区>
我需要创建一个巨大的 NxN 数组。简单的数组是在堆栈上创建的,所以没有成功。静态数组必须是 const
或 unsafe mut
,所以不行。
我试过 Box
那个数组:
const N: usize = 1000000;
let mut boxed: Box<[usize; N]> = Box::new([0; N]);
boxed[1] = 1;
但这无论如何都会溢出堆栈,大概是因为它创建了一个临时数组,然后将其复制到 Box
中。
我尝试了数组的Vec
:
const N: usize = 1000000;
let mut v = Vec::<[usize; N]>::with_capacity(10);
v.push([0; N]);
同样的结果。据我了解 with_capacity
只分配内存;由于 Rust 没有构造函数,我仍然必须将某些内容推送(即)复制到该内存中。
那么,在不每晚都去放置新元素的情况下,这样做的正确方法是什么?