schema_org_types/schemas/properties/
has_representation.rs1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub enum HasRepresentationProperty {
6 PropertyValue(PropertyValue),
8 Url(Url),
10 Text(Text),
12 #[cfg(any(all(feature = "fallible", feature = "serde"), doc))]
13 SerdeFail(crate::fallible::FailValue),
14}
15#[cfg(feature = "serde")]
16mod serde {
17 use std::{fmt, fmt::Formatter};
18
19 use ::serde::{
20 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
21 };
22
23 use super::*;
24 impl Serialize for HasRepresentationProperty {
25 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
26 where
27 S: Serializer,
28 {
29 match *self {
30 HasRepresentationProperty::PropertyValue(ref inner) => inner.serialize(serializer),
31 HasRepresentationProperty::Url(ref inner) => inner.serialize(serializer),
32 HasRepresentationProperty::Text(ref inner) => inner.serialize(serializer),
33 #[cfg(all(feature = "fallible", feature = "serde"))]
34 HasRepresentationProperty::SerdeFail(ref inner) => inner.serialize(serializer),
35 }
36 }
37 }
38 impl<'de> Deserialize<'de> for HasRepresentationProperty {
39 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
40 where
41 D: Deserializer<'de>,
42 {
43 let content =
44 <::serde::__private::de::Content as Deserialize>::deserialize(deserializer)?;
45 let deserializer =
46 ::serde::__private::de::ContentRefDeserializer::<D::Error>::new(&content);
47 if let Ok(ok) = Result::map(
48 <PropertyValue as Deserialize>::deserialize(deserializer),
49 HasRepresentationProperty::PropertyValue,
50 ) {
51 return Ok(ok);
52 }
53 if let Ok(ok) = Result::map(
54 <Url as Deserialize>::deserialize(deserializer),
55 HasRepresentationProperty::Url,
56 ) {
57 return Ok(ok);
58 }
59 if let Ok(ok) = Result::map(
60 <Text as Deserialize>::deserialize(deserializer),
61 HasRepresentationProperty::Text,
62 ) {
63 return Ok(ok);
64 }
65 #[cfg(all(feature = "fallible", feature = "serde"))]
66 if let Ok(ok) = Result::map(
67 <crate::fallible::FailValue as Deserialize>::deserialize(deserializer),
68 HasRepresentationProperty::SerdeFail,
69 ) {
70 return Ok(ok);
71 }
72 #[cfg(all(feature = "fallible", feature = "serde"))]
73 const CUSTOM_ERROR: &str = "data did neither match any variant of schema.org property hasRepresentation or was able to be deserialized into a generic value";
74 #[cfg(any(not(feature = "fallible"), not(feature = "serde")))]
75 const CUSTOM_ERROR: &str =
76 "data did not match any variant of schema.org property hasRepresentation";
77 Err(de::Error::custom(CUSTOM_ERROR))
78 }
79 }
80}