diff options
Diffstat (limited to 'src/import.rs')
-rw-r--r-- | src/import.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/import.rs b/src/import.rs index dc5a9fc..68009b1 100644 --- a/src/import.rs +++ b/src/import.rs @@ -10,20 +10,22 @@ use std::io::BufRead; use std::io::Read; use serde_json; +use failure::Fallible as Result; +use failure::ResultExt; +use failure::Error; use task::Task; -use error::{Result, ResultExt}; use error::ErrorKind as EK; /// Import taskwarrior-exported JSON. This expects an JSON Array of objects, as exported by /// taskwarrior. pub fn import<R: Read>(r: R) -> Result<Vec<Task>> { - serde_json::from_reader(r).chain_err(|| EK::ParserError) + serde_json::from_reader(r).context(EK::ParserError).map_err(Error::from) } /// Import a single JSON-formatted Task pub fn import_task(s: &str) -> Result<Task> { - serde_json::from_str(s).chain_err(|| EK::ParserError) + serde_json::from_str(s).context(EK::ParserError).map_err(Error::from) } /// Reads line by line and tries to parse a task-object per line. @@ -31,7 +33,7 @@ pub fn import_tasks<BR: BufRead>(r: BR) -> Vec<Result<Task>> { let mut vt = Vec::new(); for line in r.lines() { if line.is_err() { - vt.push(Err(line.unwrap_err()).chain_err(|| EK::ReaderError)); + vt.push(Err(line.unwrap_err()).context(EK::ReaderError).map_err(Error::from)); continue; } // Unwrap is safe because of continue above |