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 a04b3dd..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, 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, 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) -> Error<R> where E: ToString, R: pest::RuleType { -	let var: ErrorVariant<R> = ErrorVariant::CustomError { message: e.to_string() }; -	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))  } | 
