Skip to main content

take_until

Function take_until 

pub fn take_until<T, Input, Error>(tag: T) -> impl Fn(Input)
where Error: ParseError<Input>, Input: InputTake + FindSubstring<T>, T: InputLength + Clone,
Available on crate features crypto and std only.
Expand description

Returns the input slice up to the first occurrence of the pattern.

It doesn’t consume the pattern. It will return Err(Err::Error((_, ErrorKind::TakeUntil))) if the pattern wasn’t met.

§Example

use nom::bytes::complete::take_until;

fn until_eof(s: &str) -> IResult<&str, &str> {
  take_until("eof")(s)
}

assert_eq!(until_eof("hello, worldeof"), Ok(("eof", "hello, world")));
assert_eq!(until_eof("hello, world"), Err(Err::Error(Error::new("hello, world", ErrorKind::TakeUntil))));
assert_eq!(until_eof(""), Err(Err::Error(Error::new("", ErrorKind::TakeUntil))));
assert_eq!(until_eof("1eof2eof"), Ok(("eof2eof", "1")));