1个不稳定版本
0.2.0 | 2021年1月17日 |
---|
#869 in 过程宏
34KB
850 行
stateful_macro_rules
具有状态的Rust macro_rules!
。
示例
定义一个具有状态的宏
stateful_macro_rules! {
/// Auto-incremental i32 constants from 0.
constants(
next: ($next:expr) = (0),
body: ($($body:tt)*),
) {
$($body)*
};
($i:ident = $v:expr, ...) => {
body.append(const $i: i32 = $v;);
next.set($v + 1);
};
($i:ident, ...) => {
body.append(const $i: i32 = $next;);
next.set($next + 1);
};
}
使用宏
constants! { A, B, C, D = 10, E, F, }
assert_eq!(A, 0);
assert_eq!(C, 2);
assert_eq!(F, 12);
有关更多示例,请参阅文档和macro_examples.rs。
依赖关系
~79KB