diff --git a/src/files/cli.rs b/src/files/cli.rs index ddd804f..0efbfa4 100644 --- a/src/files/cli.rs +++ b/src/files/cli.rs @@ -13,7 +13,8 @@ fn from_str_via_parse(s: &str, rule: Rule, parse: P) -> result::Result) -> Result, { - let mut pairs = TodayfileParser::parse(rule, s).map_err(|e| ParseError::new((), e))?; + let mut pairs = + TodayfileParser::parse(rule, s).map_err(|e| ParseError::new((), Box::new(e)))?; let p = pairs.next().unwrap(); assert_eq!(pairs.next(), None); diff --git a/src/files/error.rs b/src/files/error.rs index f2e961a..dde9262 100644 --- a/src/files/error.rs +++ b/src/files/error.rs @@ -15,11 +15,11 @@ use super::{parse, FileSource, Files}; #[error("{error}")] pub struct ParseError { file: S, - error: parse::Error, + error: Box, } impl ParseError { - pub fn new(file: S, error: parse::Error) -> Self { + pub fn new(file: S, error: Box) -> Self { Self { file, error } } @@ -104,7 +104,7 @@ pub enum Error { #[error("{error}")] Parse { file: FileSource, - error: parse::Error, + error: Box, }, #[error("Conflicting time zones {tz1} and {tz2}")] TzConflict { diff --git a/src/files/parse.rs b/src/files/parse.rs index 7110075..8ff2eca 100644 --- a/src/files/parse.rs +++ b/src/files/parse.rs @@ -18,7 +18,7 @@ use super::primitives::{Spanned, Time, Weekday}; pub struct TodayfileParser; pub type Error = pest::error::Error; -pub type Result = result::Result; +pub type Result = result::Result>; fn error>(span: Span<'_>, message: S) -> Error { Error::new_from_span( @@ -30,7 +30,7 @@ fn error>(span: Span<'_>, message: S) -> Error { } fn fail, T>(span: Span<'_>, message: S) -> Result { - Err(error(span, message)) + Err(Box::new(error(span, message))) } fn parse_include(p: Pair<'_, Rule>) -> Spanned { @@ -851,5 +851,5 @@ pub fn parse(path: &Path, input: &str) -> Result { let file_pair = pairs.next().unwrap(); assert_eq!(pairs.next(), None); - parse_file(file_pair).map_err(|e| e.with_path(&pathstr)) + parse_file(file_pair).map_err(|e| Box::new(e.with_path(&pathstr))) }