schema_org_types/schemas/enumerations/
medical_audience_type.rs1#[cfg_attr(feature = "derive-debug", derive(Debug))]
3#[cfg_attr(feature = "derive-clone", derive(Clone))]
4pub enum MedicalAudienceType {
5 Clinician,
7 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}