schema_org_types/schemas/properties/
attendees.rs

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