是否可以创建技术上可变大小但在编译时已知的数组?更准确地说,我想做这样的事情:
fn main() {
for n in 1..5 {
let array: [i32; n] = [0; n];
// Do stuff with array
}
}
Run Code Online (Sandbox Code Playgroud)
for这段代码无法编译,但我觉得应该可以做到,因为编译器唯一可以解开循环,如下所示:
fn main() {
let array: [i32; 1] = [0; 1];
let array: [i32; 2] = [0; 2];
let array: [i32; 3] = [0; 3];
let array: [i32; 4] = [0; 4];
let array: [i32; 5] = [0; 5];
}
Run Code Online (Sandbox Code Playgroud)
它编译并执行我想要的操作,但非常重复
我可以使用向量或其他数据结构,但是我会在堆中包含变量,并且我认为我不应该仅仅因为我在循环中使用数组而使用for堆
小智 5
只需使用展开的箱子即可。
#[unroll::unroll_for_loops]
fn main() {
for n in 1..5 {
let array: [i32; n] = [0; n];
println!("{:?}", array);
}
}
Run Code Online (Sandbox Code Playgroud)