1#[cfg(feature = "toml")]
2use toml_crate as toml;
3
4pub type Result<T> = std::result::Result<T, Error>;
5
6#[derive(thiserror::Error, Debug)]
9pub enum Error {
10 #[error("couldn't read or write config file")]
12 FileAccess(#[from] std::io::Error),
13
14 #[error("file already exists")]
15 FileExists,
16
17 #[cfg(feature = "json")]
19 #[error("couldn't parse JSON file")]
20 Json(#[from] serde_json::Error),
21
22 #[cfg(feature = "toml")]
24 #[error("couldn't parse TOML file")]
25 Toml(#[from] TomlError),
26
27 #[cfg(feature = "xml")]
29 #[error("couldn't parse XML file")]
30 Xml(#[from] XmlError),
31
32 #[cfg(feature = "yaml")]
34 #[error("couldn't parse YAML file")]
35 Yaml(#[from] serde_yml::Error),
36
37 #[cfg(feature = "ron")]
39 #[error("couldn't parse Ron file")]
40 Ron(#[from] ron_crate::Error),
41
42 #[error("don't know how to parse file")]
44 UnsupportedFormat,
45}
46
47#[cfg(feature = "toml")]
49#[derive(Debug, thiserror::Error)]
50pub enum TomlError {
51 #[error("Toml deserialization error: {0}")]
53 DeserializationError(#[from] toml::de::Error),
54
55 #[error("Toml serialization error: {0}")]
57 SerializationError(#[from] toml::ser::Error),
58}
59
60#[cfg(feature = "xml")]
62#[derive(Debug, thiserror::Error)]
63pub enum XmlError {
64 #[error("Xml deserialization error: {0}")]
66 DeserializationError(#[from] quick_xml::DeError),
67
68 #[error("Xml serialization error: {0}")]
70 SerializationError(#[from] quick_xml::SeError),
71}