#macro-rules #macro #complex #aid #creation

makero

A macro_rules! 宏,用于辅助创建复杂的 macro_rules!

3 个版本

0.1.2 2021 年 9 月 11 日
0.1.1 2021 年 9 月 11 日
0.1.0 2021 年 9 月 11 日

#1558Rust 模式

Download history 1/week @ 2024-02-16 12/week @ 2024-02-23 8/week @ 2024-03-01 40/week @ 2024-03-29 11/week @ 2024-04-05

每月 51 次下载

MIT 许可证

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

无运行时依赖