3 个版本
| 0.1.2 | 2021 年 9 月 11 日 |
|---|---|
| 0.1.1 | 2021 年 9 月 11 日 |
| 0.1.0 | 2021 年 9 月 11 日 |
#1558 在 Rust 模式
每月 51 次下载
5KB
58 行
默认情况下,宏按从上到下的顺序处理;例如,foo!(bar!()) 将首先处理 foo 宏,使用字面令牌 bar ! ( ),而 bar 只有在 foo 精确输出这些令牌时才会被处理。
输入 makero。在 makero 块内部,被调用的辅助宏将按从下到上的顺序处理;下面的 main 宏输出 true,但移除 makero 将导致它输出 false,因为 is_x 宏会看到 make_x ! ( ) 而不是 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);
makero 宏接受一个或多个 macro_rules! 项目;只有最顶层的一个是外部可见的。
可以通过将属性应用到最顶层的 macro_rules! 定义上来应用到生成的宏上。