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