schema_org_types/schemas/enumerations/
payment_status_type.rs

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