schema_org_types/schemas/enumerations/
merchant_return_enumeration.rs

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