schema_org_types/schemas/enumerations/
gender_type.rs

1/// <https://schema.org/GenderType>
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
3#[cfg_attr(feature = "derive-clone", derive(Clone))]
4pub enum GenderType {
5	/// <https://schema.org/Female>
6	Female,
7	/// <https://schema.org/Male>
8	Male,
9}
10#[cfg(feature = "serde")]
11mod serde {
12	use std::{fmt, fmt::Formatter};
13
14	use ::serde::{
15		de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
16	};
17
18	use super::*;
19	impl Serialize for GenderType {
20		fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
21		where
22			S: Serializer,
23		{
24			match *self {
25				GenderType::Female => {
26					serializer.serialize_unit_variant("GenderType", 0u32, "Female")
27				}
28				GenderType::Male => serializer.serialize_unit_variant("GenderType", 1u32, "Male"),
29			}
30		}
31	}
32	impl<'de> Deserialize<'de> for GenderType {
33		fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
34		where
35			D: Deserializer<'de>,
36		{
37			enum Field {
38				Female,
39				Male,
40			}
41			struct FieldVisitor;
42			impl<'de> de::Visitor<'de> for FieldVisitor {
43				type Value = Field;
44				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
45					formatter.write_str("variant identifier")
46				}
47				fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
48				where
49					E: de::Error,
50				{
51					match value {
52						"Female" => Ok(Field::Female),
53						"Male" => Ok(Field::Male),
54						_ => Err(de::Error::unknown_variant(value, VARIANTS)),
55					}
56				}
57				fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
58				where
59					E: de::Error,
60				{
61					match value {
62						b"Female" => Ok(Field::Female),
63						b"Male" => Ok(Field::Male),
64						_ => {
65							let value = &String::from_utf8_lossy(value);
66							Err(de::Error::unknown_variant(value, VARIANTS))
67						}
68					}
69				}
70			}
71			impl<'de> Deserialize<'de> for Field {
72				fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
73				where
74					D: Deserializer<'de>,
75				{
76					deserializer.deserialize_identifier(FieldVisitor)
77				}
78			}
79			struct EnumerationVisitor;
80			impl<'de> Visitor<'de> for EnumerationVisitor {
81				type Value = GenderType;
82				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
83					formatter.write_str("schema.org schema GenderType")
84				}
85				fn visit_enum<A>(self, data: A) -> Result<Self::Value, A::Error>
86				where
87					A: de::EnumAccess<'de>,
88				{
89					match de::EnumAccess::variant::<Field>(data)? {
90						(Field::Female, variant) => {
91							de::VariantAccess::unit_variant(variant)?;
92							Ok(GenderType::Female)
93						}
94						(Field::Male, variant) => {
95							de::VariantAccess::unit_variant(variant)?;
96							Ok(GenderType::Male)
97						}
98					}
99				}
100			}
101			const VARIANTS: &[&str] = &["Female", "Male"];
102			deserializer.deserialize_enum("GenderType", VARIANTS, EnumerationVisitor)
103		}
104	}
105}