aboutsummaryrefslogtreecommitdiffstats
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs
new file mode 100644
index 0000000..36d5724
--- /dev/null
+++ b/src/error.rs
@@ -0,0 +1,31 @@
+//! Errors for `frippy` crate using `failure`.
+
+use failure::Fail;
+
+pub fn log_error(e: FrippyError) {
+ let text = e.causes()
+ .skip(1)
+ .fold(format!("{}", e), |acc, err| format!("{}: {}", acc, err));
+ error!("{}", text);
+}
+
+/// The main crate-wide error type.
+#[derive(Copy, Clone, Eq, PartialEq, Debug, Fail, Error)]
+#[error = "FrippyError"]
+pub enum ErrorKind {
+ /// Connection error
+ #[fail(display = "A connection error occured")]
+ Connection,
+
+ /// A Url error
+ #[fail(display = "A Url error has occured")]
+ Url,
+
+ /// A Tell error
+ #[fail(display = "A Tell error has occured")]
+ Tell,
+
+ /// A Factoids error
+ #[fail(display = "A Factoids error has occured")]
+ Factoids,
+}