#macro-rules #stateful #states #body #generate #define #set

stateful_macro_rules

生成具有状态的宏_rules宏

1个不稳定版本

0.2.0 2021年1月17日

#869 in 过程宏

MIT许可证

34KB
850

stateful_macro_rules

Documentation build

具有状态的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