use std::fmt;
use std::io;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum ConfigError {
#[error("configuration key not found")]
NotFound,
#[error("failed to parse configuration: {0}")]
ParseError(String),
#[error("IO error: {0}")]
IoError(#[from] io::Error),
#[error("provider error: {provider}: {message}")]
ProviderError {
provider: String,
message: String,
},
#[error("{0}")]
Other(String),
}
impl ConfigError {
pub fn provider_error<P: fmt::Display, M: fmt::Display>(provider: P, message: M) -> Self {
Self::ProviderError {
provider: provider.to_string(),
message: message.to_string(),
}
}
}