zjson/multi_document/
error.rs1use core::fmt;
2
3use crate::{any, array, literal, number, object, string};
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
6pub enum ParseMultiDocumentError {
8 InvalidElement(char),
10}
11
12impl fmt::Display for ParseMultiDocumentError {
13 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14 match self {
15 Self::InvalidElement(c) => write!(
16 f,
17 "Invalid character ({c}) in JSON document (expected an element)!"
18 ),
19 }
20 }
21}
22
23#[cfg(feature = "std")]
24impl std::error::Error for ParseMultiDocumentError {}
25
26#[allow(clippy::module_name_repetitions)]
27#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
28pub enum ParseAnyMultiDocumentError {
30 MultiDocument(ParseMultiDocumentError),
32 Any(any::ParseAnyError),
34}
35
36impl fmt::Display for ParseAnyMultiDocumentError {
37 #[inline]
38 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39 match self {
40 Self::MultiDocument(err) => err.fmt(f),
41 Self::Any(err) => err.fmt(f),
42 }
43 }
44}
45
46#[cfg(feature = "std")]
47impl std::error::Error for ParseAnyMultiDocumentError {
48 #[inline]
49 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
50 Some(match self {
51 Self::MultiDocument(err) => err,
52 Self::Any(err) => err,
53 })
54 }
55}
56
57impl From<ParseMultiDocumentError> for ParseAnyMultiDocumentError {
58 #[inline]
59 fn from(value: ParseMultiDocumentError) -> Self {
60 Self::MultiDocument(value)
61 }
62}
63
64impl From<any::ParseAnyError> for ParseAnyMultiDocumentError {
65 #[inline]
66 fn from(value: any::ParseAnyError) -> Self {
67 Self::Any(value)
68 }
69}
70
71impl From<string::ParseStringError> for ParseAnyMultiDocumentError {
72 #[inline]
73 fn from(value: string::ParseStringError) -> Self {
74 Self::Any(value.into())
75 }
76}
77
78impl From<number::ParseNumberError> for ParseAnyMultiDocumentError {
79 #[inline]
80 fn from(value: number::ParseNumberError) -> Self {
81 Self::Any(value.into())
82 }
83}
84
85impl From<object::ParseObjectError> for ParseAnyMultiDocumentError {
86 #[inline]
87 fn from(value: object::ParseObjectError) -> Self {
88 Self::Any(value.into())
89 }
90}
91
92impl From<array::ParseArrayError> for ParseAnyMultiDocumentError {
93 #[inline]
94 fn from(value: array::ParseArrayError) -> Self {
95 Self::Any(value.into())
96 }
97}
98
99impl From<literal::ParseLiteralError> for ParseAnyMultiDocumentError {
100 #[inline]
101 fn from(value: literal::ParseLiteralError) -> Self {
102 Self::Any(value.into())
103 }
104}