use super::boxed_parser::BoxedParser; use crate::parser::{ParseResult, Parser, ParserInput, Representation}; pub struct NamedParser<'a, I, O, E> where I: ParserInput, { inner_parser: BoxedParser<'a, I, O, E>, name: String, } impl<'a, I, O, E> NamedParser<'a, I, O, E> where I: ParserInput, { pub(super) fn new(inner_parser: BoxedParser<'a, I, O, E>, name: String) -> Self where I: 'a, { NamedParser { inner_parser, name } } pub fn get_name(&'a self) -> &'a str { self.name.as_ref() } } impl<'a, I: ParserInput, O, E> Parser for NamedParser<'a, I, O, E> { fn representation(&self) -> Representation { self.inner_parser.representation() } fn parse(&self, input: I) -> ParseResult { self.inner_parser.parse(input) } }