Arrays 如何初始化超大阵列的Vec?
我需要创建一个巨大的NxN阵列。简单数组是在堆栈上创建的,因此没有成功。静态数组必须是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没有构造器,所以我仍然必须将一些东西(即)复制到那个内存中 那么,在不每晚进行新的放置的情况下,
常量
或不安全的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();
}