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 |
16 | pub fn add_key(&mut self, _key: String) {} |
17 | |
18 | /// What went wrong |
19 | pub fn message(&self) -> &str { |
20 | self.inner.as_str() |
21 | } |
22 | } |
23 | |
24 | impl serde::de::Error for Error { |
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 { |
36 | 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 { |
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 { |
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 { |
79 | 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 | |