我正在查看nom
rust 的 crate,其中包含许多解析字节/字符的函数。
许多函数,例如tag()
下面看到的,处理输入不是作为函数的参数提供的,而是出现在第二组括号中,跟在我称之为参数的后面。在示例中,如果在haystack中寻找针头,则该函数使用它自己的参数,这是指定needle的方式,但haystack是单独指定的,在参数括号之后,在它自己的括号内 (也许是因为它是一个单值元组?)。tag()
use nom::bytes::complete::tag;
fn parser(s: &str) -> IResult<&str, &str> {
tag("Hello")(s)
}
在上面的示例中,tag()
的工作是测试输入是否以s
开头Hello
。您可以调用parser
,并传入“Hello 大家!”,该tag()
函数确实验证了开头s
是Hello。但是如何(s)
找到它的方式tag()
?
有人可以向我解释这种语法,或者显示在哪里阅读它。它有效,我可以使用它,但我不明白我在看什么!
谢谢