创建多个不同但固定大小的数组

cli*_*ino 2 arrays rust

是否可以创建技术上可变大小但在编译时已知的数组?更准确地说,我想做这样的事情:

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)