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!
定义上来应用到生成的宏上。