use std::str::FromStr; use pest::iterators::Pair; use pest::error::{Error,ErrorVariant}; pub trait PairExt where R: pest::RuleType { fn parse(&self) -> Result> where T: FromStr, E: ToString; } impl<'l, R> PairExt for Pair<'l, R> where R: pest::RuleType { fn parse(&self) -> Result> where T: FromStr, E: ToString { self.as_str().parse().map_err(|e: T::Err| { let var: ErrorVariant = ErrorVariant::CustomError { message: e.to_string() }; Error::new_from_span(var, self.as_span()) }) } }