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

Returns the non empty 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.


use nom::bytes::complete::take_until1;

fn until_eof(s: &str) -> IResult<&str, &str> {

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")));
assert_eq!(until_eof("eof"), Err(Err::Error(Error::new("eof", ErrorKind::TakeUntil))));