oni_comb_parser/combinator/
fn_parser.rs1use crate::fail::PResult;
2use crate::input::Input;
3use crate::parser::Parser;
4
5pub struct FnParser<F> {
18 f: F,
19}
20
21pub fn fn_parser<I, O, E, F>(f: F) -> FnParser<F>
22where
23 I: Input,
24 F: FnMut(&mut I) -> PResult<O, E>, {
25 FnParser { f }
26}
27
28impl<I, O, E, F> Parser<I> for FnParser<F>
29where
30 I: Input,
31 F: FnMut(&mut I) -> PResult<O, E>,
32{
33 type Error = E;
34 type Output = O;
35
36 #[inline]
37 fn parse_next(&mut self, input: &mut I) -> PResult<O, E> {
38 (self.f)(input)
39 }
40}