diff options
Diffstat (limited to 'parser/src/pair_ext_parse.rs')
| -rw-r--r-- | parser/src/pair_ext_parse.rs | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/parser/src/pair_ext_parse.rs b/parser/src/pair_ext_parse.rs index fb5ba6b..cbb51b0 100644 --- a/parser/src/pair_ext_parse.rs +++ b/parser/src/pair_ext_parse.rs @@ -1,21 +1,41 @@ use std::str::FromStr; -use pest::Span; +use pest::error::{Error, ErrorVariant}; use pest::iterators::Pair; -use pest::error::{Error,ErrorVariant}; - +use pest::Span; -pub trait PairExt<R> where R: pest::RuleType { - fn parse<T, E>(&self) -> Result<T, Box<Error<R>>> where T: FromStr<Err = E>, E: ToString; +pub trait PairExt<R> +where + R: pest::RuleType, +{ + fn parse<T, E>(&self) -> Result<T, Box<Error<R>>> + where + T: FromStr<Err = E>, + E: ToString; } -impl<'l, R> PairExt<R> for Pair<'l, R> where R: pest::RuleType { - fn parse<T, E>(&self) -> Result<T, Box<Error<R>>> where T: FromStr<Err = E>, E: ToString { - self.as_str().parse().map_err(|e| to_parse_error(self.as_span(), &e)) - } +impl<'l, R> PairExt<R> for Pair<'l, R> +where + R: pest::RuleType, +{ + fn parse<T, E>(&self) -> Result<T, Box<Error<R>>> + where + T: FromStr<Err = E>, + E: ToString, + { + self.as_str() + .parse() + .map_err(|e| to_parse_error(self.as_span(), &e)) + } } -pub(crate) fn to_parse_error<E, R>(span: Span, e: &E) -> Box<Error<R>> where E: ToString, R: pest::RuleType { - let var: ErrorVariant<R> = ErrorVariant::CustomError { message: e.to_string() }; - Box::new(Error::new_from_span(var, span)) +pub(crate) fn to_parse_error<E, R>(span: Span, e: &E) -> Box<Error<R>> +where + E: ToString, + R: pest::RuleType, +{ + let var: ErrorVariant<R> = ErrorVariant::CustomError { + message: e.to_string(), + }; + Box::new(Error::new_from_span(var, span)) } |
