我正在尝试学习 nom 并且在take_while
不接受is_digit
或任何其他方面遇到问题is_xxxx
。
我有要解析的行看起来像这样
#123 = ABCDEF (...);
我想在哪里获得“123”部分(最终还有 ABCDEF 和 (...) 部分。但我猜当时有一件事)。
我的解析器目前看起来像这样
use nom::{
bytes::complete::take_while,
character::is_digit,
error::ParseError,
IResult
};
// Get row id
fn id<'a, E: ParseError<&'a str>>(i: &'a str) -> IResult<&'a str, &'a str, E> {
take_while(is_digit)(i)
}
is_digit
定义看起来像这样
pub fn is_digit(chr: u8) -> bool
并且由于id
解析器采用 a&str
它会抱怨类型不匹配。但是无论如何有可能以某种方式使用 is_digit 吗?我可以在某处进行类型转换而无需分配任何东西。我真的希望这尽可能高效。
感觉提供的is_xxxx
功能应该在这种情况下使用,但我可能错了。
谢谢!