#![feature(impl_trait_in_assoc_type)] use mon::{Parser, input::{Input, InputIter}}; pub trait Parseable<'a, I: Input + 'a> { type Parser: Parser; fn parser() -> Self::Parser; fn parse(input: I) -> Result where Self: Sized, { Self::parser() .parse_finished(InputIter::new(input)) .map_err(|e| e.rest()) } }