1use quick_xml::Error as QuickXmlError;
2use serde_json::Error as SerdeJsonError;
3use std::{fmt, str::Utf8Error};
4
5#[derive(Debug)]
6pub enum Error {
7 ParseStringError(Utf8Error),
8 XmlQuickXmlError(QuickXmlError),
9 XmlParseUnexpectedEof,
10 XmlParseTextOutsideRoot,
11 JsonParseError(SerdeJsonError),
12 JsonParseInvalidAttributeName,
13 JsonParseInvalidAttributeValue,
14 JsonParseExpectedArray,
15 JsonParseExpectedObject,
16 JsonParseUnexpectedArray,
17 JsonParseUnexpectedNull,
18 JsonParseUnexpectedBool,
19 JsonParseUnexpectedNumber,
20 JsonParseDeclMissingVersion,
21 JsonParseInvalidDecl,
22}
23
24impl fmt::Display for Error {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 match self {
27 Error::ParseStringError(e) => write!(f, "Failed to parse utf8 string: {}", e),
28 Error::XmlQuickXmlError(e) => write!(f, "quick-xml error: {}", e),
29 Error::XmlParseUnexpectedEof => write!(f, "xml parse error: Unexpected end of file"),
30 Error::XmlParseTextOutsideRoot => write!(f, "xml parse error: Found text outside of the root tag"),
31 Error::JsonParseError(e) => write!(f, "json parse error: {}", e),
32 Error::JsonParseInvalidAttributeName => {
33 write!(f, "json parse error: invalid attribute name")
34 }
35 Error::JsonParseInvalidAttributeValue => {
36 write!(f, "json parse error: invalid attribute value")
37 }
38 Error::JsonParseExpectedArray => write!(f, "json parse error: expected an array"),
39 Error::JsonParseExpectedObject => write!(f, "json parse error: expected an object"),
40 Error::JsonParseUnexpectedArray => write!(f, "json parse error: unexpected array"),
41 Error::JsonParseUnexpectedNull => write!(f, "json parse error: unexpected null"),
42 Error::JsonParseUnexpectedBool => write!(f, "json parse error: unexpected bool"),
43 Error::JsonParseUnexpectedNumber => write!(f, "json parse error: unexpected number"),
44 Error::JsonParseDeclMissingVersion => {
45 write!(f, "json parse error: missing xml version")
46 }
47 Error::JsonParseInvalidDecl => write!(f, "json parse error: invalid xml declaration"),
48 }
49 }
50}