[][src]Function gchemol_parser::parsers::streaming::is_a

pub fn is_a<T, Input, Error>(arr: T) -> impl Fn(Input) where
    Error: ParseError<Input>,
    Input: InputTakeAtPosition,
    T: InputLength + FindToken<<Input as InputTakeAtPosition>::Item>, 

Returns the longest slice of the matches the pattern

The parser will return the longest slice consisting of the characters in provided in the combinator's argument

Streaming specific

Streaming version will return a Err::Incomplete(Needed::Size(1)) if the pattern wasn't met or if the pattern reaches the end of the input

Example

use nom::bytes::streaming::is_a;

fn hex(s: &str) -> IResult<&str, &str> {
  is_a("1234567890ABCDEF")(s)
}

assert_eq!(hex("123 and voila"), Ok((" and voila", "123")));
assert_eq!(hex("DEADBEEF and others"), Ok((" and others", "DEADBEEF")));
assert_eq!(hex("BADBABEsomething"), Ok(("something", "BADBABE")));
assert_eq!(hex("D15EA5E"), Err(Err::Incomplete(Needed::Size(1))));
assert_eq!(hex(""), Err(Err::Incomplete(Needed::Size(1))));