5

我试图了解 Rust 宏捕获是如何工作的,并且正在查看nom解析器库。

位置nom/src/bytes.rs声明tag!使用($i:expr, $tag: expr). tag!然而,在所有使用它的地方,它只与一个参数一起使用,即tag!("+"). 示例:nom-lua52/op.rs。我读过关于宏的教程,但是这个结构似乎很特别。

似乎输入$i隐含的?

4

1 回答 1

6

诀窍是tag!()宏调用在value!宏内部,它将匹配tag!并传递一个附加参数。这在实现tag!.

于 2018-07-16T18:24:31.623 回答