Crates.io | stateful_macro_rules |
lib.rs | stateful_macro_rules |
version | 0.2.0 |
source | src |
created_at | 2021-01-17 03:03:48.72896 |
updated_at | 2021-01-17 03:03:48.72896 |
description | Generate macro_rules macros that have states. |
homepage | |
repository | https://github.com/quark-zju/stateful_macro_rules |
max_upload_size | |
id | 343011 |
size | 33,324 |
Rust macro_rules!
with states.
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.