schema_org_types/schemas/enumerations/
drive_wheel_configuration_value.rs

1/// <https://schema.org/DriveWheelConfigurationValue>
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
3#[cfg_attr(feature = "derive-clone", derive(Clone))]
4pub enum DriveWheelConfigurationValue {
5	/// <https://schema.org/AllWheelDriveConfiguration>
6	AllWheelDriveConfiguration,
7	/// <https://schema.org/FourWheelDriveConfiguration>
8	FourWheelDriveConfiguration,
9	/// <https://schema.org/FrontWheelDriveConfiguration>
10	FrontWheelDriveConfiguration,
11	/// <https://schema.org/RearWheelDriveConfiguration>
12	RearWheelDriveConfiguration,
13}
14#[cfg(feature = "serde")]
15mod serde {
16	use std::{fmt, fmt::Formatter};
17
18	use ::serde::{
19		de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
20	};
21
22	use super::*;
23	impl Serialize for DriveWheelConfigurationValue {
24		fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
25		where
26			S: Serializer,
27		{
28			match *self {
29				DriveWheelConfigurationValue::AllWheelDriveConfiguration => serializer
30					.serialize_unit_variant(
31						"DriveWheelConfigurationValue",
32						0u32,
33						"AllWheelDriveConfiguration",
34					),
35				DriveWheelConfigurationValue::FourWheelDriveConfiguration => serializer
36					.serialize_unit_variant(
37						"DriveWheelConfigurationValue",
38						1u32,
39						"FourWheelDriveConfiguration",
40					),
41				DriveWheelConfigurationValue::FrontWheelDriveConfiguration => serializer
42					.serialize_unit_variant(
43						"DriveWheelConfigurationValue",
44						2u32,
45						"FrontWheelDriveConfiguration",
46					),
47				DriveWheelConfigurationValue::RearWheelDriveConfiguration => serializer
48					.serialize_unit_variant(
49						"DriveWheelConfigurationValue",
50						3u32,
51						"RearWheelDriveConfiguration",
52					),
53			}
54		}
55	}
56	impl<'de> Deserialize<'de> for DriveWheelConfigurationValue {
57		fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
58		where
59			D: Deserializer<'de>,
60		{
61			enum Field {
62				AllWheelDriveConfiguration,
63				FourWheelDriveConfiguration,
64				FrontWheelDriveConfiguration,
65				RearWheelDriveConfiguration,
66			}
67			struct FieldVisitor;
68			impl<'de> de::Visitor<'de> for FieldVisitor {
69				type Value = Field;
70				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
71					formatter.write_str("variant identifier")
72				}
73				fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
74				where
75					E: de::Error,
76				{
77					match value {
78						"AllWheelDriveConfiguration" => Ok(Field::AllWheelDriveConfiguration),
79						"FourWheelDriveConfiguration" => Ok(Field::FourWheelDriveConfiguration),
80						"FrontWheelDriveConfiguration" => Ok(Field::FrontWheelDriveConfiguration),
81						"RearWheelDriveConfiguration" => Ok(Field::RearWheelDriveConfiguration),
82						_ => Err(de::Error::unknown_variant(value, VARIANTS)),
83					}
84				}
85				fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
86				where
87					E: de::Error,
88				{
89					match value {
90						b"AllWheelDriveConfiguration" => Ok(Field::AllWheelDriveConfiguration),
91						b"FourWheelDriveConfiguration" => Ok(Field::FourWheelDriveConfiguration),
92						b"FrontWheelDriveConfiguration" => Ok(Field::FrontWheelDriveConfiguration),
93						b"RearWheelDriveConfiguration" => Ok(Field::RearWheelDriveConfiguration),
94						_ => {
95							let value = &String::from_utf8_lossy(value);
96							Err(de::Error::unknown_variant(value, VARIANTS))
97						}
98					}
99				}
100			}
101			impl<'de> Deserialize<'de> for Field {
102				fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
103				where
104					D: Deserializer<'de>,
105				{
106					deserializer.deserialize_identifier(FieldVisitor)
107				}
108			}
109			struct EnumerationVisitor;
110			impl<'de> Visitor<'de> for EnumerationVisitor {
111				type Value = DriveWheelConfigurationValue;
112				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
113					formatter.write_str("schema.org schema DriveWheelConfigurationValue")
114				}
115				fn visit_enum<A>(self, data: A) -> Result<Self::Value, A::Error>
116				where
117					A: de::EnumAccess<'de>,
118				{
119					match de::EnumAccess::variant::<Field>(data)? {
120						(Field::AllWheelDriveConfiguration, variant) => {
121							de::VariantAccess::unit_variant(variant)?;
122							Ok(DriveWheelConfigurationValue::AllWheelDriveConfiguration)
123						}
124						(Field::FourWheelDriveConfiguration, variant) => {
125							de::VariantAccess::unit_variant(variant)?;
126							Ok(DriveWheelConfigurationValue::FourWheelDriveConfiguration)
127						}
128						(Field::FrontWheelDriveConfiguration, variant) => {
129							de::VariantAccess::unit_variant(variant)?;
130							Ok(DriveWheelConfigurationValue::FrontWheelDriveConfiguration)
131						}
132						(Field::RearWheelDriveConfiguration, variant) => {
133							de::VariantAccess::unit_variant(variant)?;
134							Ok(DriveWheelConfigurationValue::RearWheelDriveConfiguration)
135						}
136					}
137				}
138			}
139			const VARIANTS: &[&str] = &[
140				"AllWheelDriveConfiguration",
141				"FourWheelDriveConfiguration",
142				"FrontWheelDriveConfiguration",
143				"RearWheelDriveConfiguration",
144			];
145			deserializer.deserialize_enum(
146				"DriveWheelConfigurationValue",
147				VARIANTS,
148				EnumerationVisitor,
149			)
150		}
151	}
152}