nom 的“$i”宏参数从何而来?
Where does nom's "$i" macro argument come from?
我正在尝试了解 Rust 宏捕获的工作原理,并且正在查看 nom 解析器库。
位置 nom/src/bytes.rs 声明宏 tag!
,用 ($i:expr, $tag: expr)
捕获。
然而,在使用 tag!
的所有地方,它只与一个参数一起使用,即 tag!("+")
。
示例:nom-lua52/op.rs. I've read tutorials 关于宏,但是这个构造似乎很特殊。
输入 $i
似乎是 隐含的 ?
诀窍是 tag!()
宏调用在 value!
宏内部,它将与 tag!
匹配并向其传递一个附加参数。这在文件 implementing tag!
.
中有描述
我正在尝试了解 Rust 宏捕获的工作原理,并且正在查看 nom 解析器库。
位置 nom/src/bytes.rs 声明宏 tag!
,用 ($i:expr, $tag: expr)
捕获。
然而,在使用 tag!
的所有地方,它只与一个参数一起使用,即 tag!("+")
。
示例:nom-lua52/op.rs. I've read tutorials 关于宏,但是这个构造似乎很特殊。
输入 $i
似乎是 隐含的 ?
诀窍是 tag!()
宏调用在 value!
宏内部,它将与 tag!
匹配并向其传递一个附加参数。这在文件 implementing tag!
.