Arrays 如何初始化超大阵列的Vec?

Arrays 如何初始化超大阵列的Vec?,arrays,rust,Arrays,Rust,我需要创建一个巨大的NxN阵列。简单数组是在堆栈上创建的,因此没有成功。静态数组必须是常量或不安全的mut,因此这是一个否定的条件 我尝试了Boxing该数组: const N: usize = 1000000; let mut boxed: Box<[usize; N]> = Box::new([0; N]); boxed[1] = 1; 同样的结果。据我所知,只分配内存;因为Rust没有构造器,所以我仍然必须将一些东西(即)复制到那个内存中 那么,在不每晚进行新的放置的情况下,

我需要创建一个巨大的NxN阵列。简单数组是在堆栈上创建的,因此没有成功。静态数组必须是
常量
不安全的mut
,因此这是一个否定的条件

我尝试了
Box
ing该数组:

const N: usize = 1000000;
let mut boxed: Box<[usize; N]> = Box::new([0; N]);
boxed[1] = 1;
同样的结果。据我所知,
只分配内存;因为Rust没有构造器,所以我仍然必须将一些东西(即)复制到那个内存中


那么,在不每晚进行新的放置的情况下,正确的方法是什么呢?

您可以在具有更大堆栈大小的专用线程中执行此操作:

use std::thread;

fn main() {
    const N: usize = 10000000;

    let builder = thread::Builder::new().name("reductor".into()).stack_size(
        1024 * 1024 *
            1024,
    );

    let handler = builder
        .spawn(|| {
            let mut v = Vec::<[usize; N]>::with_capacity(10);
            v.push([0; N]);

            println!("{:?}", v[0][0]);
        })
        .unwrap();

    handler.join().unwrap();
}
使用std::thread;
fn main(){
常数N:usize=10000000;
让builder=thread::builder::new().name(“reducetor.into()).stack\u size(
1024 * 1024 *
1024,
);
让handler=builder
.产卵{
设mut v=Vec::具有_容量(10);
v、 推送([0;N]);
println!(“{:?}”,v[0][0]);
})
.unwrap();
handler.join().unwrap();
}

我建议将此答案移到(其中一个)链接的副本上。
use std::thread;

fn main() {
    const N: usize = 10000000;

    let builder = thread::Builder::new().name("reductor".into()).stack_size(
        1024 * 1024 *
            1024,
    );

    let handler = builder
        .spawn(|| {
            let mut v = Vec::<[usize; N]>::with_capacity(10);
            v.push([0; N]);

            println!("{:?}", v[0][0]);
        })
        .unwrap();

    handler.join().unwrap();
}