我想生成这个const数组:
const EXPS: [i64; 9] = [1, 10_i64.pow(1), 10_i64.pow(2), 10_i64.pow(3), 10_i64.pow(4), 10_i64.pow(5), 10_i64.pow(6), 10_i64.pow(7), 10_i64.pow(8)]
宏:
define_exps!(9);
其中参数9指定数组的长度。我可以用macro做这个吗?
9
70gysomp1#
是的。你可以把它作为一个过程性宏,也可以使用dtolnay's seq-macro作为一个声明性宏:
seq-macro
macro_rules! define_exps { ( $num:literal ) => { const EXPS: [i64; $num] = ::seq_macro::seq!(N in 0..$num { [ #( 10_i64.pow(N), )* ] }); }; }
1条答案
按热度按时间70gysomp1#
是的。你可以把它作为一个过程性宏,也可以使用dtolnay's
seq-macro
作为一个声明性宏: