| Crates.io | makero |
| lib.rs | makero |
| version | 0.1.2 |
| created_at | 2021-09-11 18:46:33.416488+00 |
| updated_at | 2021-09-11 18:59:51.99276+00 |
| description | A `macro_rules!` macro to aid in the creation of complex `macro_rules!` macros |
| homepage | |
| repository | https://github.com/tjjfvi/makero |
| max_upload_size | |
| id | 449832 |
| size | 4,863 |
By default, macros are processed top-down; for example, foo!(bar!()) will
process the foo macro first, using the literal tokens bar ! ( ), and
bar will only be processed if foo outputs those tokens verbatim.
Enter makero. Inside makero blocks, invoked helper macros will be
processed bottom-up; the below main macro outputs true, but removing
makero would cause it to output false instead, as the is_x macro
would see make_x ! ( ) instead of x.
use makero::makero;
makero! {
macro_rules! main {
() => { is_x!(make_x!()) };
}
macro_rules! is_x {
(x) => { true };
($($x:tt)*) => { false };
}
macro_rules! make_x {
() => { x };
}
}
let out = main!();
assert_eq!(out, true);
The makero macro accepts one or more macro_rules! items; only the
top-most one will be externally visible.
Attributes can be applied to the resulting macro by applying them to the
top-most macro_rules! definition.