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] yaml_serde::Error),
36
37 #[cfg(feature = "ron")]
39 #[error("couldn't parse Ron file")]
40 Ron(#[from] ron_crate::Error),
41
42 #[cfg(feature = "json5")]
44 #[error("couldn't parse JSON5 file")]
45 Json5(#[from] Json5Error),
46
47 #[error("don't know how to parse file")]
49 UnsupportedFormat,
50}
51
52#[cfg(feature = "toml")]
54#[derive(Debug, thiserror::Error)]
55pub enum TomlError {
56 #[error("Toml deserialization error: {0}")]
58 DeserializationError(#[from] toml::de::Error),
59
60 #[error("Toml serialization error: {0}")]
62 SerializationError(#[from] toml::ser::Error),
63}
64
65#[cfg(feature = "xml")]
67#[derive(Debug, thiserror::Error)]
68pub enum XmlError {
69 #[error("Xml deserialization error: {0}")]
71 DeserializationError(#[from] quick_xml::DeError),
72
73 #[error("Xml serialization error: {0}")]
75 SerializationError(#[from] quick_xml::SeError),
76}
77
78#[cfg(feature = "json5")]
80#[derive(Debug, thiserror::Error)]
81pub enum Json5Error {
82 #[error("Json5 deserialization error: {0}")]
84 DeserializationError(#[from] json_five::de::SerdeJSON5Error),
85
86 #[error("Json5 serialization error: {0}")]
88 SerializationError(#[from] json_five::ser::SerdeJSON5Error),
89}