schema_org_types/schemas/enumerations/
medical_audience_type.rs

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