diff options
Diffstat (limited to 'src/render.rs')
-rw-r--r-- | src/render.rs | 38 |
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, |