如何生成一个长 const 数组,其中的值取自一个范围?奖励:1) 使用 no_std,2) 不使用任何 crate
我想做的事:
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}]
到目前为止,我得到的最远的是:
macro_rules! generate_list {
($($a:expr)+, $variant:expr) => {
[ $( A { a: $a, b: $variant } )* ]
}
}
const AS: [A; 1024] = generate_list!(1..1025i32, B::One);
至少有一个问题似乎是在范围表达式扩展为文字列表之前对宏进行了评估。