1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct MonetaryGrant {
6 pub r#amount: Vec<AmountProperty>,
8 pub r#funder: Vec<FunderProperty>,
10 pub r#funded_item: Vec<FundedItemProperty>,
12 pub r#sponsor: Vec<SponsorProperty>,
14 pub r#additional_type: Vec<AdditionalTypeProperty>,
16 pub r#alternate_name: Vec<AlternateNameProperty>,
18 pub r#description: Vec<DescriptionProperty>,
20 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
22 pub r#identifier: Vec<IdentifierProperty>,
24 pub r#image: Vec<ImageProperty>,
26 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
28 pub r#name: Vec<NameProperty>,
30 pub r#potential_action: Vec<PotentialActionProperty>,
32 pub r#same_as: Vec<SameAsProperty>,
34 pub r#subject_of: Vec<SubjectOfProperty>,
36 pub r#url: Vec<UrlProperty>,
38}
39pub trait MonetaryGrantTrait {
41 fn get_amount(&self) -> &[AmountProperty];
43 fn take_amount(&mut self) -> Vec<AmountProperty>;
45 fn get_funder(&self) -> &[FunderProperty];
47 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}