pub fn factory<Input, P, R>(p: P) -> Factory<P, R>Expand description
Constructs the parser lazily on each parse_* call. This is similar to lazy but it
takes Input as an argument and allows different parsers to be returned on each call to
p while still reporting the correct errors.
let mut parsers: Vec<FnOpaque<_, _>> = vec![opaque(|f| f(&mut digit())), opaque(|f| f(&mut letter()))];
let mut iter = parsers.into_iter().cycle();
let mut parser = many(factory(move |_| iter.next().unwrap()));
assert_eq!(parser.parse("1a2b3cd"), Ok(("1a2b3c".to_string(), "d")));