领域特定语言 (DSL)

DSL 是嵌入在 Rust 宏中的一个迷你“语言”。它完全是有效的 Rust 代码,因为宏系统会扩展为正常的 Rust 结构,但它看起来像一种小型语言。这允许您为某些特殊功能定义简洁或直观的语法(在一定范围内)。

假设我想定义一个小的计算器 API。我希望提供一个表达式并将其输出打印到控制台。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

输出

1 + 2 = 3 (1 + 2) * (3 / 4) = 0

这是一个非常简单的示例,但已经开发了更复杂的接口,例如 lazy_staticclap

另外,请注意宏中的两对花括号。外层花括号是 macro_rules! 语法的一部分,此外还有 ()[]