aboutsummaryrefslogtreecommitdiff
path: root/src/render.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/render.rs')
-rw-r--r--src/render.rs38
1 files changed, 7 insertions, 31 deletions
diff --git a/src/render.rs b/src/render.rs
index af5d2b2..484fd83 100644
--- a/src/render.rs
+++ b/src/render.rs
@@ -8,42 +8,18 @@ use imageproc::{drawing, rect::Rect};
use num_traits::{Num, NumCast};
use rusttype::{Font, Scale};
use serde::{Deserialize, Serialize};
-use std::{error::Error, fmt};
+use thiserror::Error;
-#[derive(Debug)]
+#[derive(Error, Debug)]
pub enum RenderError {
- ApiError(ApiError),
- ImageError(image::ImageError),
+ #[error("Error accessing the API")]
+ ApiError(#[from] ApiError),
+ #[error("Image processing error")]
+ ImageError(#[from] image::ImageError),
+ #[error("The build template contains nothing worth rendering")]
EmptyBuild,
}
-error_froms! { RenderError,
- err: ApiError => RenderError::ApiError(err),
- err: image::ImageError => RenderError::ImageError(err),
-}
-
-impl fmt::Display for RenderError {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- match *self {
- RenderError::ApiError(_) => write!(f, "error accessing the API"),
- RenderError::ImageError(_) => write!(f, "image processing error"),
- RenderError::EmptyBuild => {
- write!(f, "the build template contains nothing worth rendering")
- }
- }
- }
-}
-
-impl Error for RenderError {
- fn source(&self) -> Option<&(dyn Error + 'static)> {
- match *self {
- RenderError::ApiError(ref err) => Some(err),
- RenderError::ImageError(ref err) => Some(err),
- _ => None,
- }
- }
-}
-
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Alignment {
Left,