1use std::{error::Error, fmt, io};
4
5#[derive(Debug)]
7pub enum ConfigError {
8 IoError(io::Error),
10 DirectoryCreationError(String),
12 FormattingError(String),
14 AlreadyInitialized,
16}
17
18impl fmt::Display for ConfigError {
19 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
20 match self {
21 ConfigError::IoError(err) => write!(f, "I/O error: {}", err),
22 ConfigError::DirectoryCreationError(msg) => {
23 write!(f, "Failed to create directory: {}", msg)
24 }
25 ConfigError::FormattingError(msg) => write!(f, "Formatting error: {}", msg),
26 ConfigError::AlreadyInitialized => write!(f, "Configuration has already been initialized"),
27 }
28 }
29}
30
31impl Error for ConfigError {}
32
33impl From<io::Error> for ConfigError {
34 fn from(err: io::Error) -> Self {
35 ConfigError::IoError(err)
36 }
37}