schema_org_types/schemas/classes/
monetary_grant.rs

1use super::*;
2/// <https://schema.org/MonetaryGrant>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct MonetaryGrant {
6	/// <https://schema.org/amount>
7	pub r#amount: Vec<AmountProperty>,
8	/// <https://schema.org/funder>
9	pub r#funder: Vec<FunderProperty>,
10	/// <https://schema.org/fundedItem>
11	pub r#funded_item: Vec<FundedItemProperty>,
12	/// <https://schema.org/sponsor>
13	pub r#sponsor: Vec<SponsorProperty>,
14	/// <https://schema.org/additionalType>
15	pub r#additional_type: Vec<AdditionalTypeProperty>,
16	/// <https://schema.org/alternateName>
17	pub r#alternate_name: Vec<AlternateNameProperty>,
18	/// <https://schema.org/description>
19	pub r#description: Vec<DescriptionProperty>,
20	/// <https://schema.org/disambiguatingDescription>
21	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
22	/// <https://schema.org/identifier>
23	pub r#identifier: Vec<IdentifierProperty>,
24	/// <https://schema.org/image>
25	pub r#image: Vec<ImageProperty>,
26	/// <https://schema.org/mainEntityOfPage>
27	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
28	/// <https://schema.org/name>
29	pub r#name: Vec<NameProperty>,
30	/// <https://schema.org/potentialAction>
31	pub r#potential_action: Vec<PotentialActionProperty>,
32	/// <https://schema.org/sameAs>
33	pub r#same_as: Vec<SameAsProperty>,
34	/// <https://schema.org/subjectOf>
35	pub r#subject_of: Vec<SubjectOfProperty>,
36	/// <https://schema.org/url>
37	pub r#url: Vec<UrlProperty>,
38}
39/// This trait is for properties from <https://schema.org/MonetaryGrant>.
40pub trait MonetaryGrantTrait {
41	/// Get <https://schema.org/amount> from [`Self`] as borrowed slice.
42	fn get_amount(&self) -> &[AmountProperty];
43	/// Take <https://schema.org/amount> from [`Self`] as owned vector.
44	fn take_amount(&mut self) -> Vec<AmountProperty>;
45	/// Get <https://schema.org/funder> from [`Self`] as borrowed slice.
46	fn get_funder(&self) -> &[FunderProperty];
47	/// Take <https://schema.org/funder> from [`Self`] as owned vector.
48	fn take_funder(&mut self) -> Vec<FunderProperty>;
49}
50impl MonetaryGrantTrait for MonetaryGrant {
51	fn get_amount(&self) -> &[AmountProperty] {
52		self.r#amount.as_slice()
53	}
54	fn take_amount(&mut self) -> Vec<AmountProperty> {
55		std::mem::take(&mut self.r#amount)
56	}
57	fn get_funder(&self) -> &[FunderProperty] {
58		self.r#funder.as_slice()
59	}
60	fn take_funder(&mut self) -> Vec<FunderProperty> {
61		std::mem::take(&mut self.r#funder)
62	}
63}
64impl GrantTrait for MonetaryGrant {
65	fn get_funded_item(&self) -> &[FundedItemProperty] {
66		self.r#funded_item.as_slice()
67	}
68	fn take_funded_item(&mut self) -> Vec<FundedItemProperty> {
69		std::mem::take(&mut self.r#funded_item)
70	}
71	fn get_funder(&self) -> &[FunderProperty] {
72		self.r#funder.as_slice()
73	}
74	fn take_funder(&mut self) -> Vec<FunderProperty> {
75		std::mem::take(&mut self.r#funder)
76	}
77	fn get_sponsor(&self) -> &[SponsorProperty] {
78		self.r#sponsor.as_slice()
79	}
80	fn take_sponsor(&mut self) -> Vec<SponsorProperty> {
81		std::mem::take(&mut self.r#sponsor)
82	}
83}
84impl ThingTrait for MonetaryGrant {
85	fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
86		self.r#additional_type.as_slice()
87	}
88	fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
89		std::mem::take(&mut self.r#additional_type)
90	}
91	fn get_alternate_name(&self) -> &[AlternateNameProperty] {
92		self.r#alternate_name.as_slice()
93	}
94	fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
95		std::mem::take(&mut self.r#alternate_name)
96	}
97	fn get_description(&self) -> &[DescriptionProperty] {
98		self.r#description.as_slice()
99	}
100	fn take_description(&mut self) -> Vec<DescriptionProperty> {
101		std::mem::take(&mut self.r#description)
102	}
103	fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
104		self.r#disambiguating_description.as_slice()
105	}
106	fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
107		std::mem::take(&mut self.r#disambiguating_description)
108	}
109	fn get_identifier(&self) -> &[IdentifierProperty] {
110		self.r#identifier.as_slice()
111	}
112	fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
113		std::mem::take(&mut self.r#identifier)
114	}
115	fn get_image(&self) -> &[ImageProperty] {
116		self.r#image.as_slice()
117	}
118	fn take_image(&mut self) -> Vec<ImageProperty> {
119		std::mem::take(&mut self.r#image)
120	}
121	fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
122		self.r#main_entity_of_page.as_slice()
123	}
124	fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
125		std::mem::take(&mut self.r#main_entity_of_page)
126	}
127	fn get_name(&self) -> &[NameProperty] {
128		self.r#name.as_slice()
129	}
130	fn take_name(&mut self) -> Vec<NameProperty> {
131		std::mem::take(&mut self.r#name)
132	}
133	fn get_potential_action(&self) -> &[PotentialActionProperty] {
134		self.r#potential_action.as_slice()
135	}
136	fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
137		std::mem::take(&mut self.r#potential_action)
138	}
139	fn get_same_as(&self) -> &[SameAsProperty] {
140		self.r#same_as.as_slice()
141	}
142	fn take_same_as(&mut self) -> Vec<SameAsProperty> {
143		std::mem::take(&mut self.r#same_as)
144	}
145	fn get_subject_of(&self) -> &[SubjectOfProperty] {
146		self.r#subject_of.as_slice()
147	}
148	fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
149		std::mem::take(&mut self.r#subject_of)
150	}
151	fn get_url(&self) -> &[UrlProperty] {
152		self.r#url.as_slice()
153	}
154	fn take_url(&mut self) -> Vec<UrlProperty> {
155		std::mem::take(&mut self.r#url)
156	}
157}
158#[cfg(feature = "serde")]
159mod serde {
160	use std::{fmt, fmt::Formatter};
161
162	use ::serde::{
163		de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
164	};
165
166	use super::*;
167	impl Serialize for MonetaryGrant {
168		fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
169		where
170			S: Serializer,
171		{
172			let len: usize = [
173				!Vec::is_empty(&self.r#amount) as usize,
174				!Vec::is_empty(&self.r#funder) as usize,
175				!Vec::is_empty(&self.r#funded_item) as usize,
176				!Vec::is_empty(&self.r#sponsor) as usize,
177				!Vec::is_empty(&self.r#additional_type) as usize,
178				!Vec::is_empty(&self.r#alternate_name) as usize,
179				!Vec::is_empty(&self.r#description) as usize,
180				!Vec::is_empty(&self.r#disambiguating_description) as usize,
181				!Vec::is_empty(&self.r#identifier) as usize,
182				!Vec::is_empty(&self.r#image) as usize,
183				!Vec::is_empty(&self.r#main_entity_of_page) as usize,
184				!Vec::is_empty(&self.r#name) as usize,
185				!Vec::is_empty(&self.r#potential_action) as usize,
186				!Vec::is_empty(&self.r#same_as) as usize,
187				!Vec::is_empty(&self.r#subject_of) as usize,
188				!Vec::is_empty(&self.r#url) as usize,
189			]
190			.iter()
191			.sum();
192			let mut serialize_struct =
193				Serializer::serialize_struct(serializer, "MonetaryGrant", len)?;
194			if !Vec::is_empty(&self.r#amount) {
195				serialize_struct.serialize_field("amount", {
196					struct SerializeWith<'a>(&'a Vec<AmountProperty>);
197					impl<'a> Serialize for SerializeWith<'a> {
198						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
199						where
200							S: Serializer,
201						{
202							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
203								self.0, serializer,
204							)
205						}
206					}
207					&SerializeWith(&self.r#amount)
208				})?;
209			} else {
210				serialize_struct.skip_field("amount")?;
211			}
212			if !Vec::is_empty(&self.r#funder) {
213				serialize_struct.serialize_field("funder", {
214					struct SerializeWith<'a>(&'a Vec<FunderProperty>);
215					impl<'a> Serialize for SerializeWith<'a> {
216						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
217						where
218							S: Serializer,
219						{
220							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
221								self.0, serializer,
222							)
223						}
224					}
225					&SerializeWith(&self.r#funder)
226				})?;
227			} else {
228				serialize_struct.skip_field("funder")?;
229			}
230			if !Vec::is_empty(&self.r#funded_item) {
231				serialize_struct.serialize_field("fundedItem", {
232					struct SerializeWith<'a>(&'a Vec<FundedItemProperty>);
233					impl<'a> Serialize for SerializeWith<'a> {
234						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
235						where
236							S: Serializer,
237						{
238							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
239								self.0, serializer,
240							)
241						}
242					}
243					&SerializeWith(&self.r#funded_item)
244				})?;
245			} else {
246				serialize_struct.skip_field("fundedItem")?;
247			}
248			if !Vec::is_empty(&self.r#sponsor) {
249				serialize_struct.serialize_field("sponsor", {
250					struct SerializeWith<'a>(&'a Vec<SponsorProperty>);
251					impl<'a> Serialize for SerializeWith<'a> {
252						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
253						where
254							S: Serializer,
255						{
256							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
257								self.0, serializer,
258							)
259						}
260					}
261					&SerializeWith(&self.r#sponsor)
262				})?;
263			} else {
264				serialize_struct.skip_field("sponsor")?;
265			}
266			if !Vec::is_empty(&self.r#additional_type) {
267				serialize_struct.serialize_field("additionalType", {
268					struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
269					impl<'a> Serialize for SerializeWith<'a> {
270						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
271						where
272							S: Serializer,
273						{
274							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
275								self.0, serializer,
276							)
277						}
278					}
279					&SerializeWith(&self.r#additional_type)
280				})?;
281			} else {
282				serialize_struct.skip_field("additionalType")?;
283			}
284			if !Vec::is_empty(&self.r#alternate_name) {
285				serialize_struct.serialize_field("alternateName", {
286					struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
287					impl<'a> Serialize for SerializeWith<'a> {
288						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
289						where
290							S: Serializer,
291						{
292							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
293								self.0, serializer,
294							)
295						}
296					}
297					&SerializeWith(&self.r#alternate_name)
298				})?;
299			} else {
300				serialize_struct.skip_field("alternateName")?;
301			}
302			if !Vec::is_empty(&self.r#description) {
303				serialize_struct.serialize_field("description", {
304					struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
305					impl<'a> Serialize for SerializeWith<'a> {
306						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
307						where
308							S: Serializer,
309						{
310							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
311								self.0, serializer,
312							)
313						}
314					}
315					&SerializeWith(&self.r#description)
316				})?;
317			} else {
318				serialize_struct.skip_field("description")?;
319			}
320			if !Vec::is_empty(&self.r#disambiguating_description) {
321				serialize_struct.serialize_field("disambiguatingDescription", {
322					struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
323					impl<'a> Serialize for SerializeWith<'a> {
324						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
325						where
326							S: Serializer,
327						{
328							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
329								self.0, serializer,
330							)
331						}
332					}
333					&SerializeWith(&self.r#disambiguating_description)
334				})?;
335			} else {
336				serialize_struct.skip_field("disambiguatingDescription")?;
337			}
338			if !Vec::is_empty(&self.r#identifier) {
339				serialize_struct.serialize_field("identifier", {
340					struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
341					impl<'a> Serialize for SerializeWith<'a> {
342						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
343						where
344							S: Serializer,
345						{
346							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
347								self.0, serializer,
348							)
349						}
350					}
351					&SerializeWith(&self.r#identifier)
352				})?;
353			} else {
354				serialize_struct.skip_field("identifier")?;
355			}
356			if !Vec::is_empty(&self.r#image) {
357				serialize_struct.serialize_field("image", {
358					struct SerializeWith<'a>(&'a Vec<ImageProperty>);
359					impl<'a> Serialize for SerializeWith<'a> {
360						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
361						where
362							S: Serializer,
363						{
364							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
365								self.0, serializer,
366							)
367						}
368					}
369					&SerializeWith(&self.r#image)
370				})?;
371			} else {
372				serialize_struct.skip_field("image")?;
373			}
374			if !Vec::is_empty(&self.r#main_entity_of_page) {
375				serialize_struct.serialize_field("mainEntityOfPage", {
376					struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
377					impl<'a> Serialize for SerializeWith<'a> {
378						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
379						where
380							S: Serializer,
381						{
382							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
383								self.0, serializer,
384							)
385						}
386					}
387					&SerializeWith(&self.r#main_entity_of_page)
388				})?;
389			} else {
390				serialize_struct.skip_field("mainEntityOfPage")?;
391			}
392			if !Vec::is_empty(&self.r#name) {
393				serialize_struct.serialize_field("name", {
394					struct SerializeWith<'a>(&'a Vec<NameProperty>);
395					impl<'a> Serialize for SerializeWith<'a> {
396						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
397						where
398							S: Serializer,
399						{
400							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
401								self.0, serializer,
402							)
403						}
404					}
405					&SerializeWith(&self.r#name)
406				})?;
407			} else {
408				serialize_struct.skip_field("name")?;
409			}
410			if !Vec::is_empty(&self.r#potential_action) {
411				serialize_struct.serialize_field("potentialAction", {
412					struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
413					impl<'a> Serialize for SerializeWith<'a> {
414						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
415						where
416							S: Serializer,
417						{
418							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
419								self.0, serializer,
420							)
421						}
422					}
423					&SerializeWith(&self.r#potential_action)
424				})?;
425			} else {
426				serialize_struct.skip_field("potentialAction")?;
427			}
428			if !Vec::is_empty(&self.r#same_as) {
429				serialize_struct.serialize_field("sameAs", {
430					struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
431					impl<'a> Serialize for SerializeWith<'a> {
432						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
433						where
434							S: Serializer,
435						{
436							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
437								self.0, serializer,
438							)
439						}
440					}
441					&SerializeWith(&self.r#same_as)
442				})?;
443			} else {
444				serialize_struct.skip_field("sameAs")?;
445			}
446			if !Vec::is_empty(&self.r#subject_of) {
447				serialize_struct.serialize_field("subjectOf", {
448					struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
449					impl<'a> Serialize for SerializeWith<'a> {
450						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
451						where
452							S: Serializer,
453						{
454							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
455								self.0, serializer,
456							)
457						}
458					}
459					&SerializeWith(&self.r#subject_of)
460				})?;
461			} else {
462				serialize_struct.skip_field("subjectOf")?;
463			}
464			if !Vec::is_empty(&self.r#url) {
465				serialize_struct.serialize_field("url", {
466					struct SerializeWith<'a>(&'a Vec<UrlProperty>);
467					impl<'a> Serialize for SerializeWith<'a> {
468						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
469						where
470							S: Serializer,
471						{
472							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
473								self.0, serializer,
474							)
475						}
476					}
477					&SerializeWith(&self.r#url)
478				})?;
479			} else {
480				serialize_struct.skip_field("url")?;
481			}
482			serialize_struct.end()
483		}
484	}
485	impl<'de> Deserialize<'de> for MonetaryGrant {
486		fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
487		where
488			D: Deserializer<'de>,
489		{
490			enum Field {
491				Amount,
492				Funder,
493				FundedItem,
494				Sponsor,
495				AdditionalType,
496				AlternateName,
497				Description,
498				DisambiguatingDescription,
499				Identifier,
500				Image,
501				MainEntityOfPage,
502				Name,
503				PotentialAction,
504				SameAs,
505				SubjectOf,
506				Url,
507				Ignore,
508			}
509			struct FieldVisitor;
510			impl<'de> Visitor<'de> for FieldVisitor {
511				type Value = Field;
512				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
513					formatter.write_str("field identifier")
514				}
515				fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
516				where
517					E: de::Error,
518				{
519					match value {
520						"amount" => Ok(Field::Amount),
521						"funder" => Ok(Field::Funder),
522						"fundedItem" => Ok(Field::FundedItem),
523						"sponsor" => Ok(Field::Sponsor),
524						"additionalType" => Ok(Field::AdditionalType),
525						"alternateName" => Ok(Field::AlternateName),
526						"description" => Ok(Field::Description),
527						"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
528						"identifier" => Ok(Field::Identifier),
529						"image" => Ok(Field::Image),
530						"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
531						"name" => Ok(Field::Name),
532						"potentialAction" => Ok(Field::PotentialAction),
533						"sameAs" => Ok(Field::SameAs),
534						"subjectOf" => Ok(Field::SubjectOf),
535						"url" => Ok(Field::Url),
536						"id" | "type" => Ok(Field::Ignore),
537						_ => Err(de::Error::unknown_field(value, FIELDS)),
538					}
539				}
540				fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
541				where
542					E: de::Error,
543				{
544					match value {
545						b"amount" => Ok(Field::Amount),
546						b"funder" => Ok(Field::Funder),
547						b"fundedItem" => Ok(Field::FundedItem),
548						b"sponsor" => Ok(Field::Sponsor),
549						b"additionalType" => Ok(Field::AdditionalType),
550						b"alternateName" => Ok(Field::AlternateName),
551						b"description" => Ok(Field::Description),
552						b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
553						b"identifier" => Ok(Field::Identifier),
554						b"image" => Ok(Field::Image),
555						b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
556						b"name" => Ok(Field::Name),
557						b"potentialAction" => Ok(Field::PotentialAction),
558						b"sameAs" => Ok(Field::SameAs),
559						b"subjectOf" => Ok(Field::SubjectOf),
560						b"url" => Ok(Field::Url),
561						b"id" | b"type" => Ok(Field::Ignore),
562						_ => {
563							let value = &String::from_utf8_lossy(value);
564							Err(de::Error::unknown_field(value, FIELDS))
565						}
566					}
567				}
568			}
569			impl<'de> Deserialize<'de> for Field {
570				fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
571				where
572					D: Deserializer<'de>,
573				{
574					deserializer.deserialize_identifier(FieldVisitor)
575				}
576			}
577			struct ClassVisitor;
578			impl<'de> Visitor<'de> for ClassVisitor {
579				type Value = MonetaryGrant;
580				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
581					formatter.write_str("schema.org schema MonetaryGrant")
582				}
583				fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
584				where
585					A: de::MapAccess<'de>,
586				{
587					let mut r#amount_property = None;
588					let mut r#funder_property = None;
589					let mut r#funded_item_property = None;
590					let mut r#sponsor_property = None;
591					let mut r#additional_type_property = None;
592					let mut r#alternate_name_property = None;
593					let mut r#description_property = None;
594					let mut r#disambiguating_description_property = None;
595					let mut r#identifier_property = None;
596					let mut r#image_property = None;
597					let mut r#main_entity_of_page_property = None;
598					let mut r#name_property = None;
599					let mut r#potential_action_property = None;
600					let mut r#same_as_property = None;
601					let mut r#subject_of_property = None;
602					let mut r#url_property = None;
603					while let Some(key) = map.next_key::<Field>()? {
604						match key {
605							Field::Amount => {
606								if r#amount_property.is_some() {
607									return Err(<A::Error as de::Error>::duplicate_field("amount"));
608								}
609								r#amount_property = Some({
610									struct DeserializeWith(Vec<AmountProperty>);
611									impl<'de> Deserialize<'de> for DeserializeWith {
612										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
613										where
614											D: Deserializer<'de>,
615										{
616											Ok(DeserializeWith(serde_with::As::<
617												serde_with::OneOrMany<serde_with::Same>,
618											>::deserialize(deserializer)?))
619										}
620									}
621									match map.next_value::<DeserializeWith>() {
622										Ok(deserialize_with) => deserialize_with.0,
623										Err(err) => {
624											return Err(err);
625										}
626									}
627								});
628							}
629							Field::Funder => {
630								if r#funder_property.is_some() {
631									return Err(<A::Error as de::Error>::duplicate_field("funder"));
632								}
633								r#funder_property = Some({
634									struct DeserializeWith(Vec<FunderProperty>);
635									impl<'de> Deserialize<'de> for DeserializeWith {
636										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
637										where
638											D: Deserializer<'de>,
639										{
640											Ok(DeserializeWith(serde_with::As::<
641												serde_with::OneOrMany<serde_with::Same>,
642											>::deserialize(deserializer)?))
643										}
644									}
645									match map.next_value::<DeserializeWith>() {
646										Ok(deserialize_with) => deserialize_with.0,
647										Err(err) => {
648											return Err(err);
649										}
650									}
651								});
652							}
653							Field::FundedItem => {
654								if r#funded_item_property.is_some() {
655									return Err(<A::Error as de::Error>::duplicate_field(
656										"fundedItem",
657									));
658								}
659								r#funded_item_property = Some({
660									struct DeserializeWith(Vec<FundedItemProperty>);
661									impl<'de> Deserialize<'de> for DeserializeWith {
662										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
663										where
664											D: Deserializer<'de>,
665										{
666											Ok(DeserializeWith(serde_with::As::<
667												serde_with::OneOrMany<serde_with::Same>,
668											>::deserialize(deserializer)?))
669										}
670									}
671									match map.next_value::<DeserializeWith>() {
672										Ok(deserialize_with) => deserialize_with.0,
673										Err(err) => {
674											return Err(err);
675										}
676									}
677								});
678							}
679							Field::Sponsor => {
680								if r#sponsor_property.is_some() {
681									return Err(<A::Error as de::Error>::duplicate_field(
682										"sponsor",
683									));
684								}
685								r#sponsor_property = Some({
686									struct DeserializeWith(Vec<SponsorProperty>);
687									impl<'de> Deserialize<'de> for DeserializeWith {
688										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
689										where
690											D: Deserializer<'de>,
691										{
692											Ok(DeserializeWith(serde_with::As::<
693												serde_with::OneOrMany<serde_with::Same>,
694											>::deserialize(deserializer)?))
695										}
696									}
697									match map.next_value::<DeserializeWith>() {
698										Ok(deserialize_with) => deserialize_with.0,
699										Err(err) => {
700											return Err(err);
701										}
702									}
703								});
704							}
705							Field::AdditionalType => {
706								if r#additional_type_property.is_some() {
707									return Err(<A::Error as de::Error>::duplicate_field(
708										"additionalType",
709									));
710								}
711								r#additional_type_property = Some({
712									struct DeserializeWith(Vec<AdditionalTypeProperty>);
713									impl<'de> Deserialize<'de> for DeserializeWith {
714										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
715										where
716											D: Deserializer<'de>,
717										{
718											Ok(DeserializeWith(serde_with::As::<
719												serde_with::OneOrMany<serde_with::Same>,
720											>::deserialize(deserializer)?))
721										}
722									}
723									match map.next_value::<DeserializeWith>() {
724										Ok(deserialize_with) => deserialize_with.0,
725										Err(err) => {
726											return Err(err);
727										}
728									}
729								});
730							}
731							Field::AlternateName => {
732								if r#alternate_name_property.is_some() {
733									return Err(<A::Error as de::Error>::duplicate_field(
734										"alternateName",
735									));
736								}
737								r#alternate_name_property = Some({
738									struct DeserializeWith(Vec<AlternateNameProperty>);
739									impl<'de> Deserialize<'de> for DeserializeWith {
740										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
741										where
742											D: Deserializer<'de>,
743										{
744											Ok(DeserializeWith(serde_with::As::<
745												serde_with::OneOrMany<serde_with::Same>,
746											>::deserialize(deserializer)?))
747										}
748									}
749									match map.next_value::<DeserializeWith>() {
750										Ok(deserialize_with) => deserialize_with.0,
751										Err(err) => {
752											return Err(err);
753										}
754									}
755								});
756							}
757							Field::Description => {
758								if r#description_property.is_some() {
759									return Err(<A::Error as de::Error>::duplicate_field(
760										"description",
761									));
762								}
763								r#description_property = Some({
764									struct DeserializeWith(Vec<DescriptionProperty>);
765									impl<'de> Deserialize<'de> for DeserializeWith {
766										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
767										where
768											D: Deserializer<'de>,
769										{
770											Ok(DeserializeWith(serde_with::As::<
771												serde_with::OneOrMany<serde_with::Same>,
772											>::deserialize(deserializer)?))
773										}
774									}
775									match map.next_value::<DeserializeWith>() {
776										Ok(deserialize_with) => deserialize_with.0,
777										Err(err) => {
778											return Err(err);
779										}
780									}
781								});
782							}
783							Field::DisambiguatingDescription => {
784								if r#disambiguating_description_property.is_some() {
785									return Err(<A::Error as de::Error>::duplicate_field(
786										"disambiguatingDescription",
787									));
788								}
789								r#disambiguating_description_property = Some({
790									struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
791									impl<'de> Deserialize<'de> for DeserializeWith {
792										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
793										where
794											D: Deserializer<'de>,
795										{
796											Ok(DeserializeWith(serde_with::As::<
797												serde_with::OneOrMany<serde_with::Same>,
798											>::deserialize(deserializer)?))
799										}
800									}
801									match map.next_value::<DeserializeWith>() {
802										Ok(deserialize_with) => deserialize_with.0,
803										Err(err) => {
804											return Err(err);
805										}
806									}
807								});
808							}
809							Field::Identifier => {
810								if r#identifier_property.is_some() {
811									return Err(<A::Error as de::Error>::duplicate_field(
812										"identifier",
813									));
814								}
815								r#identifier_property = Some({
816									struct DeserializeWith(Vec<IdentifierProperty>);
817									impl<'de> Deserialize<'de> for DeserializeWith {
818										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
819										where
820											D: Deserializer<'de>,
821										{
822											Ok(DeserializeWith(serde_with::As::<
823												serde_with::OneOrMany<serde_with::Same>,
824											>::deserialize(deserializer)?))
825										}
826									}
827									match map.next_value::<DeserializeWith>() {
828										Ok(deserialize_with) => deserialize_with.0,
829										Err(err) => {
830											return Err(err);
831										}
832									}
833								});
834							}
835							Field::Image => {
836								if r#image_property.is_some() {
837									return Err(<A::Error as de::Error>::duplicate_field("image"));
838								}
839								r#image_property = Some({
840									struct DeserializeWith(Vec<ImageProperty>);
841									impl<'de> Deserialize<'de> for DeserializeWith {
842										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
843										where
844											D: Deserializer<'de>,
845										{
846											Ok(DeserializeWith(serde_with::As::<
847												serde_with::OneOrMany<serde_with::Same>,
848											>::deserialize(deserializer)?))
849										}
850									}
851									match map.next_value::<DeserializeWith>() {
852										Ok(deserialize_with) => deserialize_with.0,
853										Err(err) => {
854											return Err(err);
855										}
856									}
857								});
858							}
859							Field::MainEntityOfPage => {
860								if r#main_entity_of_page_property.is_some() {
861									return Err(<A::Error as de::Error>::duplicate_field(
862										"mainEntityOfPage",
863									));
864								}
865								r#main_entity_of_page_property = Some({
866									struct DeserializeWith(Vec<MainEntityOfPageProperty>);
867									impl<'de> Deserialize<'de> for DeserializeWith {
868										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
869										where
870											D: Deserializer<'de>,
871										{
872											Ok(DeserializeWith(serde_with::As::<
873												serde_with::OneOrMany<serde_with::Same>,
874											>::deserialize(deserializer)?))
875										}
876									}
877									match map.next_value::<DeserializeWith>() {
878										Ok(deserialize_with) => deserialize_with.0,
879										Err(err) => {
880											return Err(err);
881										}
882									}
883								});
884							}
885							Field::Name => {
886								if r#name_property.is_some() {
887									return Err(<A::Error as de::Error>::duplicate_field("name"));
888								}
889								r#name_property = Some({
890									struct DeserializeWith(Vec<NameProperty>);
891									impl<'de> Deserialize<'de> for DeserializeWith {
892										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
893										where
894											D: Deserializer<'de>,
895										{
896											Ok(DeserializeWith(serde_with::As::<
897												serde_with::OneOrMany<serde_with::Same>,
898											>::deserialize(deserializer)?))
899										}
900									}
901									match map.next_value::<DeserializeWith>() {
902										Ok(deserialize_with) => deserialize_with.0,
903										Err(err) => {
904											return Err(err);
905										}
906									}
907								});
908							}
909							Field::PotentialAction => {
910								if r#potential_action_property.is_some() {
911									return Err(<A::Error as de::Error>::duplicate_field(
912										"potentialAction",
913									));
914								}
915								r#potential_action_property = Some({
916									struct DeserializeWith(Vec<PotentialActionProperty>);
917									impl<'de> Deserialize<'de> for DeserializeWith {
918										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
919										where
920											D: Deserializer<'de>,
921										{
922											Ok(DeserializeWith(serde_with::As::<
923												serde_with::OneOrMany<serde_with::Same>,
924											>::deserialize(deserializer)?))
925										}
926									}
927									match map.next_value::<DeserializeWith>() {
928										Ok(deserialize_with) => deserialize_with.0,
929										Err(err) => {
930											return Err(err);
931										}
932									}
933								});
934							}
935							Field::SameAs => {
936								if r#same_as_property.is_some() {
937									return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
938								}
939								r#same_as_property = Some({
940									struct DeserializeWith(Vec<SameAsProperty>);
941									impl<'de> Deserialize<'de> for DeserializeWith {
942										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
943										where
944											D: Deserializer<'de>,
945										{
946											Ok(DeserializeWith(serde_with::As::<
947												serde_with::OneOrMany<serde_with::Same>,
948											>::deserialize(deserializer)?))
949										}
950									}
951									match map.next_value::<DeserializeWith>() {
952										Ok(deserialize_with) => deserialize_with.0,
953										Err(err) => {
954											return Err(err);
955										}
956									}
957								});
958							}
959							Field::SubjectOf => {
960								if r#subject_of_property.is_some() {
961									return Err(<A::Error as de::Error>::duplicate_field(
962										"subjectOf",
963									));
964								}
965								r#subject_of_property = Some({
966									struct DeserializeWith(Vec<SubjectOfProperty>);
967									impl<'de> Deserialize<'de> for DeserializeWith {
968										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
969										where
970											D: Deserializer<'de>,
971										{
972											Ok(DeserializeWith(serde_with::As::<
973												serde_with::OneOrMany<serde_with::Same>,
974											>::deserialize(deserializer)?))
975										}
976									}
977									match map.next_value::<DeserializeWith>() {
978										Ok(deserialize_with) => deserialize_with.0,
979										Err(err) => {
980											return Err(err);
981										}
982									}
983								});
984							}
985							Field::Url => {
986								if r#url_property.is_some() {
987									return Err(<A::Error as de::Error>::duplicate_field("url"));
988								}
989								r#url_property = Some({
990									struct DeserializeWith(Vec<UrlProperty>);
991									impl<'de> Deserialize<'de> for DeserializeWith {
992										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
993										where
994											D: Deserializer<'de>,
995										{
996											Ok(DeserializeWith(serde_with::As::<
997												serde_with::OneOrMany<serde_with::Same>,
998											>::deserialize(deserializer)?))
999										}
1000									}
1001									match map.next_value::<DeserializeWith>() {
1002										Ok(deserialize_with) => deserialize_with.0,
1003										Err(err) => {
1004											return Err(err);
1005										}
1006									}
1007								});
1008							}
1009							Field::Ignore => {
1010								let _ = map.next_value::<de::IgnoredAny>()?;
1011							}
1012						}
1013					}
1014					Ok(MonetaryGrant {
1015						r#amount: r#amount_property.unwrap_or_default(),
1016						r#funder: r#funder_property.unwrap_or_default(),
1017						r#funded_item: r#funded_item_property.unwrap_or_default(),
1018						r#sponsor: r#sponsor_property.unwrap_or_default(),
1019						r#additional_type: r#additional_type_property.unwrap_or_default(),
1020						r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1021						r#description: r#description_property.unwrap_or_default(),
1022						r#disambiguating_description: r#disambiguating_description_property
1023							.unwrap_or_default(),
1024						r#identifier: r#identifier_property.unwrap_or_default(),
1025						r#image: r#image_property.unwrap_or_default(),
1026						r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1027						r#name: r#name_property.unwrap_or_default(),
1028						r#potential_action: r#potential_action_property.unwrap_or_default(),
1029						r#same_as: r#same_as_property.unwrap_or_default(),
1030						r#subject_of: r#subject_of_property.unwrap_or_default(),
1031						r#url: r#url_property.unwrap_or_default(),
1032					})
1033				}
1034			}
1035			const FIELDS: &[&str] = &[
1036				"amount",
1037				"funder",
1038				"fundedItem",
1039				"sponsor",
1040				"additionalType",
1041				"alternateName",
1042				"description",
1043				"disambiguatingDescription",
1044				"identifier",
1045				"image",
1046				"mainEntityOfPage",
1047				"name",
1048				"potentialAction",
1049				"sameAs",
1050				"subjectOf",
1051				"url",
1052			];
1053			deserializer.deserialize_struct("MonetaryGrant", FIELDS, ClassVisitor)
1054		}
1055	}
1056}