#[cfg(feature = "toml_crate")]
use toml_crate as toml;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("couldn't read or write config file")]
FileAccess(#[from] std::io::Error),
#[error("file already exists")]
FileExists,
#[cfg(feature = "json")]
#[error("couldn't parse JSON file")]
Json(#[from] serde_json::Error),
#[cfg(feature = "toml_crate")]
#[error("couldn't parse TOML file")]
Toml(#[from] TomlError),
#[cfg(feature = "xml")]
#[error("couldn't parse XML file")]
Xml(#[from] quick_xml::DeError),
#[cfg(feature = "yaml")]
#[error("couldn't parse YAML file")]
Yaml(#[from] serde_yml::Error),
#[error("don't know how to parse file")]
UnsupportedFormat,
}
#[cfg(feature = "toml_crate")]
#[derive(Debug, thiserror::Error)]
pub enum TomlError {
#[error("Toml deserialization error: {0}")]
DeserializationError(#[from] toml::de::Error),
#[error("Toml serialization error: {0}")]
SerializationError(#[from] toml::ser::Error),
}