schema_org_types/schemas/properties/
value_reference.rs1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub enum ValueReferenceProperty {
6 DefinedTerm(DefinedTerm),
8 Enumeration(Enumeration),
10 PropertyValue(PropertyValue),
12 QualitativeValue(QualitativeValue),
14 QuantitativeValue(QuantitativeValue),
16 StructuredValue(StructuredValue),
18 MeasurementTypeEnumeration(MeasurementTypeEnumeration),
20 Text(Text),
22 #[cfg(any(all(feature = "fallible", feature = "serde"), doc))]
23 SerdeFail(crate::fallible::FailValue),
24}
25#[cfg(feature = "serde")]
26mod serde {
27 use std::{fmt, fmt::Formatter};
28
29 use ::serde::{
30 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
31 };
32
33 use super::*;
34 impl Serialize for ValueReferenceProperty {
35 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
36 where
37 S: Serializer,
38 {
39 match *self {
40 ValueReferenceProperty::DefinedTerm(ref inner) => inner.serialize(serializer),
41 ValueReferenceProperty::Enumeration(ref inner) => inner.serialize(serializer),
42 ValueReferenceProperty::PropertyValue(ref inner) => inner.serialize(serializer),
43 ValueReferenceProperty::QualitativeValue(ref inner) => inner.serialize(serializer),
44 ValueReferenceProperty::QuantitativeValue(ref inner) => inner.serialize(serializer),
45 ValueReferenceProperty::StructuredValue(ref inner) => inner.serialize(serializer),
46 ValueReferenceProperty::MeasurementTypeEnumeration(ref inner) => {
47 inner.serialize(serializer)
48 }
49 ValueReferenceProperty::Text(ref inner) => inner.serialize(serializer),
50 #[cfg(all(feature = "fallible", feature = "serde"))]
51 ValueReferenceProperty::SerdeFail(ref inner) => inner.serialize(serializer),
52 }
53 }
54 }
55 impl<'de> Deserialize<'de> for ValueReferenceProperty {
56 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
57 where
58 D: Deserializer<'de>,
59 {
60 let content =
61 <::serde::__private::de::Content as Deserialize>::deserialize(deserializer)?;
62 let deserializer =
63 ::serde::__private::de::ContentRefDeserializer::<D::Error>::new(&content);
64 if let Ok(ok) = Result::map(
65 <DefinedTerm as Deserialize>::deserialize(deserializer),
66 ValueReferenceProperty::DefinedTerm,
67 ) {
68 return Ok(ok);
69 }
70 if let Ok(ok) = Result::map(
71 <Enumeration as Deserialize>::deserialize(deserializer),
72 ValueReferenceProperty::Enumeration,
73 ) {
74 return Ok(ok);
75 }
76 if let Ok(ok) = Result::map(
77 <PropertyValue as Deserialize>::deserialize(deserializer),
78 ValueReferenceProperty::PropertyValue,
79 ) {
80 return Ok(ok);
81 }
82 if let Ok(ok) = Result::map(
83 <QualitativeValue as Deserialize>::deserialize(deserializer),
84 ValueReferenceProperty::QualitativeValue,
85 ) {
86 return Ok(ok);
87 }
88 if let Ok(ok) = Result::map(
89 <QuantitativeValue as Deserialize>::deserialize(deserializer),
90 ValueReferenceProperty::QuantitativeValue,
91 ) {
92 return Ok(ok);
93 }
94 if let Ok(ok) = Result::map(
95 <StructuredValue as Deserialize>::deserialize(deserializer),
96 ValueReferenceProperty::StructuredValue,
97 ) {
98 return Ok(ok);
99 }
100 if let Ok(ok) = Result::map(
101 <MeasurementTypeEnumeration as Deserialize>::deserialize(deserializer),
102 ValueReferenceProperty::MeasurementTypeEnumeration,
103 ) {
104 return Ok(ok);
105 }
106 if let Ok(ok) = Result::map(
107 <Text as Deserialize>::deserialize(deserializer),
108 ValueReferenceProperty::Text,
109 ) {
110 return Ok(ok);
111 }
112 #[cfg(all(feature = "fallible", feature = "serde"))]
113 if let Ok(ok) = Result::map(
114 <crate::fallible::FailValue as Deserialize>::deserialize(deserializer),
115 ValueReferenceProperty::SerdeFail,
116 ) {
117 return Ok(ok);
118 }
119 #[cfg(all(feature = "fallible", feature = "serde"))]
120 const CUSTOM_ERROR: &str = "data did neither match any variant of schema.org property valueReference or was able to be deserialized into a generic value";
121 #[cfg(any(not(feature = "fallible"), not(feature = "serde")))]
122 const CUSTOM_ERROR: &str =
123 "data did not match any variant of schema.org property valueReference";
124 Err(de::Error::custom(CUSTOM_ERROR))
125 }
126 }
127}