aboutsummaryrefslogtreecommitdiffstats
path: root/askama_shared/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'askama_shared/src/error.rs')
-rw-r--r--askama_shared/src/error.rs95
1 files changed, 0 insertions, 95 deletions
diff --git a/askama_shared/src/error.rs b/askama_shared/src/error.rs
deleted file mode 100644
index 7c959a6..0000000
--- a/askama_shared/src/error.rs
+++ /dev/null
@@ -1,95 +0,0 @@
-use std::fmt::{self, Display};
-
-pub type Result<I, E = Error> = ::std::result::Result<I, E>;
-
-/// askama error type
-///
-/// # Feature Interaction
-///
-/// If the feature `serde_json` is enabled an
-/// additional error variant `Json` is added.
-///
-/// # Why not `failure`/`error-chain`?
-///
-/// Error from `error-chain` are not `Sync` which
-/// can lead to problems e.g. when this is used
-/// by a crate which use `failure`. Implementing
-/// `Fail` on the other hand prevents the implementation
-/// of `std::error::Error` until specialization lands
-/// on stable. While errors impl. `Fail` can be
-/// converted to a type impl. `std::error::Error`
-/// using a adapter the benefits `failure` would
-/// bring to this crate are small, which is why
-/// `std::error::Error` was used.
-///
-#[non_exhaustive]
-#[derive(Debug)]
-pub enum Error {
- /// formatting error
- Fmt(fmt::Error),
-
- /// an error raised by using `?` in a template
- Custom(Box<dyn std::error::Error + Send + Sync>),
-
- /// json conversion error
- #[cfg(feature = "serde_json")]
- Json(::serde_json::Error),
-
- /// yaml conversion error
- #[cfg(feature = "serde_yaml")]
- Yaml(::serde_yaml::Error),
-}
-
-impl std::error::Error for Error {
- fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
- match *self {
- Error::Fmt(ref err) => Some(err),
- Error::Custom(ref err) => Some(err.as_ref()),
- #[cfg(feature = "serde_json")]
- Error::Json(ref err) => Some(err),
- #[cfg(feature = "serde_yaml")]
- Error::Yaml(ref err) => Some(err),
- }
- }
-}
-
-impl Display for Error {
- fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
- match self {
- Error::Fmt(err) => write!(formatter, "formatting error: {}", err),
- Error::Custom(err) => write!(formatter, "{}", err),
- #[cfg(feature = "serde_json")]
- Error::Json(err) => write!(formatter, "json conversion error: {}", err),
- #[cfg(feature = "serde_yaml")]
- Error::Yaml(err) => write!(formatter, "yaml conversion error: {}", err),
- }
- }
-}
-
-impl From<fmt::Error> for Error {
- fn from(err: fmt::Error) -> Self {
- Error::Fmt(err)
- }
-}
-
-#[cfg(feature = "serde_json")]
-impl From<::serde_json::Error> for Error {
- fn from(err: ::serde_json::Error) -> Self {
- Error::Json(err)
- }
-}
-
-#[cfg(feature = "serde_yaml")]
-impl From<::serde_yaml::Error> for Error {
- fn from(err: ::serde_yaml::Error) -> Self {
- Error::Yaml(err)
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::Error;
-
- trait AssertSendSyncStatic: Send + Sync + 'static {}
- impl AssertSendSyncStatic for Error {}
-}