小编Lit*_*ode的帖子

来自范围的常量数组

如何使用取自某个范围的值生成一个长常量数组?奖励:1)使用 no_std,2)不使用任何板条箱

我想做什么:

struct A {
    a: i32,
    b: B
}

enum B {
    One,
    Two
}

const AS: [A; 1024] = [A{a: 1, b: B::One}, A{a: 2, b: B::One}, ..., A{a: 1024, b: B::One}]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我得到的最远的是:

macro_rules! generate_list {
    ($($a:expr)+, $variant:expr) =>  {
        [ $( A { a: $a, b: $variant } )* ]
    }
}
const AS: [A; 1024] = generate_list!(1..1025i32, B::One);
Run Code Online (Sandbox Code Playgroud)

至少有一个问题似乎是宏在范围表达式扩展为文字列表之前被评估。

arrays constants compile-time rust rust-no-std

3
推荐指数
1
解决办法
133
查看次数

标签 统计

arrays ×1

compile-time ×1

constants ×1

rust ×1

rust-no-std ×1