1use alloc::string::String;
4use core::fmt;
5
6use crate::error;
7
8#[non_exhaustive]
10#[derive(#[automatically_derived]
impl ::core::fmt::Debug for InvalidFormatDescription {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
InvalidFormatDescription::UnclosedOpeningBracket { index: __self_0
} =>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"UnclosedOpeningBracket", "index", &__self_0),
InvalidFormatDescription::InvalidComponentName {
name: __self_0, index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"InvalidComponentName", "name", __self_0, "index",
&__self_1),
InvalidFormatDescription::InvalidModifier {
value: __self_0, index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"InvalidModifier", "value", __self_0, "index", &__self_1),
InvalidFormatDescription::MissingComponentName { index: __self_0 }
=>
::core::fmt::Formatter::debug_struct_field1_finish(f,
"MissingComponentName", "index", &__self_0),
InvalidFormatDescription::MissingRequiredModifier {
name: __self_0, index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"MissingRequiredModifier", "name", __self_0, "index",
&__self_1),
InvalidFormatDescription::Expected {
what: __self_0, index: __self_1 } =>
::core::fmt::Formatter::debug_struct_field2_finish(f,
"Expected", "what", __self_0, "index", &__self_1),
InvalidFormatDescription::NotSupported {
what: __self_0, context: __self_1, index: __self_2 } =>
::core::fmt::Formatter::debug_struct_field3_finish(f,
"NotSupported", "what", __self_0, "context", __self_1,
"index", &__self_2),
}
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for InvalidFormatDescription {
#[inline]
fn clone(&self) -> InvalidFormatDescription {
match self {
InvalidFormatDescription::UnclosedOpeningBracket { index: __self_0
} =>
InvalidFormatDescription::UnclosedOpeningBracket {
index: ::core::clone::Clone::clone(__self_0),
},
InvalidFormatDescription::InvalidComponentName {
name: __self_0, index: __self_1 } =>
InvalidFormatDescription::InvalidComponentName {
name: ::core::clone::Clone::clone(__self_0),
index: ::core::clone::Clone::clone(__self_1),
},
InvalidFormatDescription::InvalidModifier {
value: __self_0, index: __self_1 } =>
InvalidFormatDescription::InvalidModifier {
value: ::core::clone::Clone::clone(__self_0),
index: ::core::clone::Clone::clone(__self_1),
},
InvalidFormatDescription::MissingComponentName { index: __self_0 }
=>
InvalidFormatDescription::MissingComponentName {
index: ::core::clone::Clone::clone(__self_0),
},
InvalidFormatDescription::MissingRequiredModifier {
name: __self_0, index: __self_1 } =>
InvalidFormatDescription::MissingRequiredModifier {
name: ::core::clone::Clone::clone(__self_0),
index: ::core::clone::Clone::clone(__self_1),
},
InvalidFormatDescription::Expected {
what: __self_0, index: __self_1 } =>
InvalidFormatDescription::Expected {
what: ::core::clone::Clone::clone(__self_0),
index: ::core::clone::Clone::clone(__self_1),
},
InvalidFormatDescription::NotSupported {
what: __self_0, context: __self_1, index: __self_2 } =>
InvalidFormatDescription::NotSupported {
what: ::core::clone::Clone::clone(__self_0),
context: ::core::clone::Clone::clone(__self_1),
index: ::core::clone::Clone::clone(__self_2),
},
}
}
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for InvalidFormatDescription {
#[inline]
fn eq(&self, other: &InvalidFormatDescription) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(InvalidFormatDescription::UnclosedOpeningBracket {
index: __self_0 },
InvalidFormatDescription::UnclosedOpeningBracket {
index: __arg1_0 }) => __self_0 == __arg1_0,
(InvalidFormatDescription::InvalidComponentName {
name: __self_0, index: __self_1 },
InvalidFormatDescription::InvalidComponentName {
name: __arg1_0, index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(InvalidFormatDescription::InvalidModifier {
value: __self_0, index: __self_1 },
InvalidFormatDescription::InvalidModifier {
value: __arg1_0, index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(InvalidFormatDescription::MissingComponentName {
index: __self_0 },
InvalidFormatDescription::MissingComponentName {
index: __arg1_0 }) => __self_0 == __arg1_0,
(InvalidFormatDescription::MissingRequiredModifier {
name: __self_0, index: __self_1 },
InvalidFormatDescription::MissingRequiredModifier {
name: __arg1_0, index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(InvalidFormatDescription::Expected {
what: __self_0, index: __self_1 },
InvalidFormatDescription::Expected {
what: __arg1_0, index: __arg1_1 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1,
(InvalidFormatDescription::NotSupported {
what: __self_0, context: __self_1, index: __self_2 },
InvalidFormatDescription::NotSupported {
what: __arg1_0, context: __arg1_1, index: __arg1_2 }) =>
__self_0 == __arg1_0 && __self_1 == __arg1_1 &&
__self_2 == __arg1_2,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for InvalidFormatDescription {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) -> () {
let _: ::core::cmp::AssertParamIsEq<usize>;
let _: ::core::cmp::AssertParamIsEq<String>;
let _: ::core::cmp::AssertParamIsEq<&'static str>;
let _: ::core::cmp::AssertParamIsEq<&'static str>;
let _: ::core::cmp::AssertParamIsEq<&'static str>;
let _: ::core::cmp::AssertParamIsEq<&'static str>;
}
}Eq)]
11pub enum InvalidFormatDescription {
12 #[non_exhaustive]
14 UnclosedOpeningBracket {
15 index: usize,
17 },
18 #[non_exhaustive]
20 InvalidComponentName {
21 name: String,
23 index: usize,
25 },
26 #[non_exhaustive]
28 InvalidModifier {
29 value: String,
31 index: usize,
33 },
34 #[non_exhaustive]
36 MissingComponentName {
37 index: usize,
39 },
40 #[non_exhaustive]
42 MissingRequiredModifier {
43 name: &'static str,
45 index: usize,
47 },
48 #[non_exhaustive]
50 Expected {
51 what: &'static str,
53 index: usize,
55 },
56 #[non_exhaustive]
58 NotSupported {
59 what: &'static str,
61 context: &'static str,
63 index: usize,
65 },
66}
67
68impl From<InvalidFormatDescription> for crate::Error {
69 #[inline]
70 fn from(original: InvalidFormatDescription) -> Self {
71 Self::InvalidFormatDescription(original)
72 }
73}
74
75impl TryFrom<crate::Error> for InvalidFormatDescription {
76 type Error = error::DifferentVariant;
77
78 #[inline]
79 fn try_from(err: crate::Error) -> Result<Self, Self::Error> {
80 match err {
81 crate::Error::InvalidFormatDescription(err) => Ok(err),
82 _ => Err(error::DifferentVariant),
83 }
84 }
85}
86
87impl fmt::Display for InvalidFormatDescription {
88 #[inline]
89 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
90 use InvalidFormatDescription::*;
91 match self {
92 UnclosedOpeningBracket { index } => {
93 f.write_fmt(format_args!("unclosed opening bracket at byte index {0}", index))write!(f, "unclosed opening bracket at byte index {index}")
94 }
95 InvalidComponentName { name, index } => {
96 f.write_fmt(format_args!("invalid component name `{0}` at byte index {1}",
name, index))write!(f, "invalid component name `{name}` at byte index {index}")
97 }
98 InvalidModifier { value, index } => {
99 f.write_fmt(format_args!("invalid modifier `{0}` at byte index {1}", value,
index))write!(f, "invalid modifier `{value}` at byte index {index}")
100 }
101 MissingComponentName { index } => {
102 f.write_fmt(format_args!("missing component name at byte index {0}", index))write!(f, "missing component name at byte index {index}")
103 }
104 MissingRequiredModifier { name, index } => {
105 f.write_fmt(format_args!("missing required modifier `{0}` for component at byte index {1}",
name, index))write!(
106 f,
107 "missing required modifier `{name}` for component at byte index {index}"
108 )
109 }
110 Expected {
111 what: expected,
112 index,
113 } => {
114 f.write_fmt(format_args!("expected {0} at byte index {1}", expected, index))write!(f, "expected {expected} at byte index {index}")
115 }
116 NotSupported {
117 what,
118 context,
119 index,
120 } => {
121 if context.is_empty() {
122 f.write_fmt(format_args!("{0} is not supported at byte index {1}", what,
index))write!(f, "{what} is not supported at byte index {index}")
123 } else {
124 f.write_fmt(format_args!("{0} is not supported in {1} at byte index {2}",
what, context, index))write!(
125 f,
126 "{what} is not supported in {context} at byte index {index}"
127 )
128 }
129 }
130 }
131 }
132}
133
134impl core::error::Error for InvalidFormatDescription {}