summaryrefslogtreecommitdiffstats
path: root/src/import.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/import.rs')
-rw-r--r--src/import.rs10
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