1 #[cfg(feature = "parse")]
2 pub(crate) mod de {
3     pub(crate) use toml_edit::de::Error;
4 }
5 
6 #[cfg(not(feature = "parse"))]
7 pub(crate) mod de {
8     /// Errors that can occur when deserializing a type.
9     #[derive(Debug, Clone, PartialEq, Eq)]
10     pub struct Error {
11         inner: String,
12     }
13 
14     impl Error {
15         /// Add key while unwinding
add_key(&mut self, _key: String)16         pub fn add_key(&mut self, _key: String) {}
17 
18         /// What went wrong
message(&self) -> &str19         pub fn message(&self) -> &str {
20             self.inner.as_str()
21         }
22     }
23 
24     impl serde::de::Error for Error {
custom<T>(msg: T) -> Self where T: std::fmt::Display,25         fn custom<T>(msg: T) -> Self
26         where
27             T: std::fmt::Display,
28         {
29             Error {
30                 inner: msg.to_string(),
31             }
32         }
33     }
34 
35     impl std::fmt::Display for Error {
fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result36         fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
37             self.inner.fmt(f)
38         }
39     }
40 
41     impl std::error::Error for Error {}
42 }
43 
44 #[cfg(feature = "display")]
45 pub(crate) mod ser {
46     pub(crate) use toml_edit::ser::Error;
47 }
48 
49 #[cfg(not(feature = "display"))]
50 pub(crate) mod ser {
51     #[derive(Debug, Clone, PartialEq, Eq)]
52     #[non_exhaustive]
53     pub(crate) enum Error {
54         UnsupportedType(Option<&'static str>),
55         UnsupportedNone,
56         KeyNotString,
57         Custom(String),
58     }
59 
60     impl Error {
custom<T>(msg: T) -> Self where T: std::fmt::Display,61         pub(crate) fn custom<T>(msg: T) -> Self
62         where
63             T: std::fmt::Display,
64         {
65             Error::Custom(msg.to_string())
66         }
67     }
68 
69     impl serde::ser::Error for Error {
custom<T>(msg: T) -> Self where T: std::fmt::Display,70         fn custom<T>(msg: T) -> Self
71         where
72             T: std::fmt::Display,
73         {
74             Self::custom(msg)
75         }
76     }
77 
78     impl std::fmt::Display for Error {
fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result79         fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
80             match self {
81                 Self::UnsupportedType(Some(t)) => write!(formatter, "unsupported {t} type"),
82                 Self::UnsupportedType(None) => write!(formatter, "unsupported rust type"),
83                 Self::UnsupportedNone => "unsupported None value".fmt(formatter),
84                 Self::KeyNotString => "map key was not a string".fmt(formatter),
85                 Self::Custom(s) => s.fmt(formatter),
86             }
87         }
88     }
89 
90     impl std::error::Error for Error {}
91 }
92