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

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

It doesn’t consume the pattern.

§Streaming Specific

Streaming version will return a Err::Incomplete(Needed::new(N)) if the input doesn’t contain the pattern or if the input is smaller than the pattern.

§Example

use nom::bytes::streaming::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::Incomplete(Needed::Unknown)));
assert_eq!(until_eof("hello, worldeo"), Err(Err::Incomplete(Needed::Unknown)));
assert_eq!(until_eof("1eof2eof"), Ok(("eof2eof", "1")));