Skip to main content

csh/config/
errors.rs

1//! Configuration-related error types
2
3use std::{error::Error, fmt, io};
4
5/// Errors that can occur during configuration loading and processing
6#[derive(Debug)]
7pub enum ConfigError {
8    /// I/O error when reading config files
9    IoError(io::Error),
10    /// Failed to create required directories
11    DirectoryCreationError(String),
12    /// Error formatting configuration data
13    FormattingError(String),
14    /// Configuration has already been initialized
15    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}