summaryrefslogtreecommitdiffstats
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/error.rs b/src/error.rs
index b9c7b3a..8b01844 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,17 +1,27 @@
-#[derive(Debug, Clone, Eq, PartialEq, Fail)]
-pub enum VObjectErrorKind {
- #[fail(display = "Parser error: {}", _0)]
- ParserError(String),
+use thiserror::Error;
- #[fail(display = "Not a Vcard")]
+use ::parser::ParseErrorReason;
+
+#[derive(Debug, Clone, Error)]
+pub enum VObjectError {
+ #[error("failed to parse: {}", source)]
+ Parse {
+ #[from]
+ source: ParseErrorReason,
+ },
+
+ #[error("Not a Vcard")]
NotAVCard,
- #[fail(display = "Not a Icalendar: {}", _0)]
+ #[error("Not a Icalendar: {}", _0)]
NotAnICalendar(String),
#[cfg(feature = "timeconversions")]
- #[fail(display = "{}", _0)]
- ChronoError(::chrono::format::ParseError),
+ #[error("failed to parse time")]
+ ChronoError {
+ #[from]
+ source: chrono::format::ParseError,
+ },
}
-pub type Result<T> = ::std::result::Result<T, VObjectErrorKind>;
+pub(crate) type VObjectResult<T> = Result<T, VObjectError>;