Function fill
pub fn fill<'a, I, O, E, F>(f: F, buf: &'a mut [O]) -> impl FnMut(I) + 'aAvailable on (crate features
rustls or boring or acme) and crate feature rustls only.Expand description
Runs the embedded parser repeatedly, filling the given slice with results.
This parser fails if the input runs out before the given slice is full.
ยงArguments
fThe parser to apply.bufThe slice to fill
use nom::multi::fill;
use nom::bytes::complete::tag;
fn parser(s: &str) -> IResult<&str, [&str; 2]> {
let mut buf = ["", ""];
let (rest, ()) = fill(tag("abc"), &mut buf)(s)?;
Ok((rest, buf))
}
assert_eq!(parser("abcabc"), Ok(("", ["abc", "abc"])));
assert_eq!(parser("abc123"), Err(Err::Error(Error::new("123", ErrorKind::Tag))));
assert_eq!(parser("123123"), Err(Err::Error(Error::new("123123", ErrorKind::Tag))));
assert_eq!(parser(""), Err(Err::Error(Error::new("", ErrorKind::Tag))));
assert_eq!(parser("abcabcabc"), Ok(("abc", ["abc", "abc"])));