1use std::{
5 io,
6 error,
7 path::PathBuf,
8
9 fmt::{
10 Display,
11 Formatter
12 }
13};
14
15#[derive(Debug)]
16pub enum Error {
17 JsonError(String),
18 IoError(io::Error),
19 ValidationError(String),
20 ColorParseError(String),
21 FileNotFound(PathBuf)
22}
23
24impl Display for Error {
25 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
26 match self {
27 Error::JsonError(e) => write!(f, "JSON parsing error: {}", e),
28 Error::IoError(e) => write!(f, "IO error: {}", e),
29 Error::ValidationError(e) => write!(f, "Validation error: {}", e),
30 Error::ColorParseError(e) => write!(f, "Color parse error: {}", e),
31 Error::FileNotFound(path) => write!(f, "File not found: {:?}", path)
32 }
33 }
34}
35
36impl error::Error for Error {
37 }
39
40impl From<io::Error> for Error {
41 fn from(err: io::Error) -> Self {
42 Error::IoError(err)
43 }
44}
45
46impl From<serde_json::Error> for Error {
47 fn from(err: serde_json::Error) -> Self {
48 Error::JsonError(err.to_string())
49 }
50}