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

macro stateful_macro_rules

Generate macro_rules macros that have states

1 unstable release

0.2.0 Jan 17, 2021

#877 in Procedural macros

MIT license

34KB
850 lines

stateful_macro_rules

Documentation build

Rust macro_rules! with states.

Example

Define a stateful macro:

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);
    };
}

Use the macro:

constants! { A, B, C, D = 10, E, F, }

assert_eq!(A, 0);
assert_eq!(C, 2);
assert_eq!(F, 12);

Refer to the documentation and macro_examples.rs for more examples.

Dependencies

~83KB