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)))
}