1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct EndorsementRating {
6 pub r#author: Vec<AuthorProperty>,
8 pub r#best_rating: Vec<BestRatingProperty>,
10 pub r#rating_explanation: Vec<RatingExplanationProperty>,
12 pub r#rating_value: Vec<RatingValueProperty>,
14 pub r#review_aspect: Vec<ReviewAspectProperty>,
16 pub r#worst_rating: Vec<WorstRatingProperty>,
18 pub r#additional_type: Vec<AdditionalTypeProperty>,
20 pub r#alternate_name: Vec<AlternateNameProperty>,
22 pub r#description: Vec<DescriptionProperty>,
24 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
26 pub r#identifier: Vec<IdentifierProperty>,
28 pub r#image: Vec<ImageProperty>,
30 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
32 pub r#name: Vec<NameProperty>,
34 pub r#potential_action: Vec<PotentialActionProperty>,
36 pub r#same_as: Vec<SameAsProperty>,
38 pub r#subject_of: Vec<SubjectOfProperty>,
40 pub r#url: Vec<UrlProperty>,
42}
43pub trait EndorsementRatingTrait {}
45impl EndorsementRatingTrait for EndorsementRating {}
46impl RatingTrait for EndorsementRating {
47 fn get_author(&self) -> &[AuthorProperty] {
48 self.r#author.as_slice()
49 }
50 fn take_author(&mut self) -> Vec<AuthorProperty> {
51 std::mem::take(&mut self.r#author)
52 }
53 fn get_best_rating(&self) -> &[BestRatingProperty] {
54 self.r#best_rating.as_slice()
55 }
56 fn take_best_rating(&mut self) -> Vec<BestRatingProperty> {
57 std::mem::take(&mut self.r#best_rating)
58 }
59 fn get_rating_explanation(&self) -> &[RatingExplanationProperty] {
60 self.r#rating_explanation.as_slice()
61 }
62 fn take_rating_explanation(&mut self) -> Vec<RatingExplanationProperty> {
63 std::mem::take(&mut self.r#rating_explanation)
64 }
65 fn get_rating_value(&self) -> &[RatingValueProperty] {
66 self.r#rating_value.as_slice()
67 }
68 fn take_rating_value(&mut self) -> Vec<RatingValueProperty> {
69 std::mem::take(&mut self.r#rating_value)
70 }
71 fn get_review_aspect(&self) -> &[ReviewAspectProperty] {
72 self.r#review_aspect.as_slice()
73 }
74 fn take_review_aspect(&mut self) -> Vec<ReviewAspectProperty> {
75 std::mem::take(&mut self.r#review_aspect)
76 }
77 fn get_worst_rating(&self) -> &[WorstRatingProperty] {
78 self.r#worst_rating.as_slice()
79 }
80 fn take_worst_rating(&mut self) -> Vec<WorstRatingProperty> {
81 std::mem::take(&mut self.r#worst_rating)
82 }
83}
84impl ThingTrait for EndorsementRating {
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 EndorsementRating {
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#author) as usize,
174 !Vec::is_empty(&self.r#best_rating) as usize,
175 !Vec::is_empty(&self.r#rating_explanation) as usize,
176 !Vec::is_empty(&self.r#rating_value) as usize,
177 !Vec::is_empty(&self.r#review_aspect) as usize,
178 !Vec::is_empty(&self.r#worst_rating) as usize,
179 !Vec::is_empty(&self.r#additional_type) as usize,
180 !Vec::is_empty(&self.r#alternate_name) as usize,
181 !Vec::is_empty(&self.r#description) as usize,
182 !Vec::is_empty(&self.r#disambiguating_description) as usize,
183 !Vec::is_empty(&self.r#identifier) as usize,
184 !Vec::is_empty(&self.r#image) as usize,
185 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
186 !Vec::is_empty(&self.r#name) as usize,
187 !Vec::is_empty(&self.r#potential_action) as usize,
188 !Vec::is_empty(&self.r#same_as) as usize,
189 !Vec::is_empty(&self.r#subject_of) as usize,
190 !Vec::is_empty(&self.r#url) as usize,
191 ]
192 .iter()
193 .sum();
194 let mut serialize_struct =
195 Serializer::serialize_struct(serializer, "EndorsementRating", len)?;
196 if !Vec::is_empty(&self.r#author) {
197 serialize_struct.serialize_field("author", {
198 struct SerializeWith<'a>(&'a Vec<AuthorProperty>);
199 impl<'a> Serialize for SerializeWith<'a> {
200 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
201 where
202 S: Serializer,
203 {
204 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
205 self.0, serializer,
206 )
207 }
208 }
209 &SerializeWith(&self.r#author)
210 })?;
211 } else {
212 serialize_struct.skip_field("author")?;
213 }
214 if !Vec::is_empty(&self.r#best_rating) {
215 serialize_struct.serialize_field("bestRating", {
216 struct SerializeWith<'a>(&'a Vec<BestRatingProperty>);
217 impl<'a> Serialize for SerializeWith<'a> {
218 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
219 where
220 S: Serializer,
221 {
222 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
223 self.0, serializer,
224 )
225 }
226 }
227 &SerializeWith(&self.r#best_rating)
228 })?;
229 } else {
230 serialize_struct.skip_field("bestRating")?;
231 }
232 if !Vec::is_empty(&self.r#rating_explanation) {
233 serialize_struct.serialize_field("ratingExplanation", {
234 struct SerializeWith<'a>(&'a Vec<RatingExplanationProperty>);
235 impl<'a> Serialize for SerializeWith<'a> {
236 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
237 where
238 S: Serializer,
239 {
240 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
241 self.0, serializer,
242 )
243 }
244 }
245 &SerializeWith(&self.r#rating_explanation)
246 })?;
247 } else {
248 serialize_struct.skip_field("ratingExplanation")?;
249 }
250 if !Vec::is_empty(&self.r#rating_value) {
251 serialize_struct.serialize_field("ratingValue", {
252 struct SerializeWith<'a>(&'a Vec<RatingValueProperty>);
253 impl<'a> Serialize for SerializeWith<'a> {
254 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
255 where
256 S: Serializer,
257 {
258 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
259 self.0, serializer,
260 )
261 }
262 }
263 &SerializeWith(&self.r#rating_value)
264 })?;
265 } else {
266 serialize_struct.skip_field("ratingValue")?;
267 }
268 if !Vec::is_empty(&self.r#review_aspect) {
269 serialize_struct.serialize_field("reviewAspect", {
270 struct SerializeWith<'a>(&'a Vec<ReviewAspectProperty>);
271 impl<'a> Serialize for SerializeWith<'a> {
272 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
273 where
274 S: Serializer,
275 {
276 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
277 self.0, serializer,
278 )
279 }
280 }
281 &SerializeWith(&self.r#review_aspect)
282 })?;
283 } else {
284 serialize_struct.skip_field("reviewAspect")?;
285 }
286 if !Vec::is_empty(&self.r#worst_rating) {
287 serialize_struct.serialize_field("worstRating", {
288 struct SerializeWith<'a>(&'a Vec<WorstRatingProperty>);
289 impl<'a> Serialize for SerializeWith<'a> {
290 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
291 where
292 S: Serializer,
293 {
294 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
295 self.0, serializer,
296 )
297 }
298 }
299 &SerializeWith(&self.r#worst_rating)
300 })?;
301 } else {
302 serialize_struct.skip_field("worstRating")?;
303 }
304 if !Vec::is_empty(&self.r#additional_type) {
305 serialize_struct.serialize_field("additionalType", {
306 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
307 impl<'a> Serialize for SerializeWith<'a> {
308 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
309 where
310 S: Serializer,
311 {
312 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
313 self.0, serializer,
314 )
315 }
316 }
317 &SerializeWith(&self.r#additional_type)
318 })?;
319 } else {
320 serialize_struct.skip_field("additionalType")?;
321 }
322 if !Vec::is_empty(&self.r#alternate_name) {
323 serialize_struct.serialize_field("alternateName", {
324 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
325 impl<'a> Serialize for SerializeWith<'a> {
326 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
327 where
328 S: Serializer,
329 {
330 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
331 self.0, serializer,
332 )
333 }
334 }
335 &SerializeWith(&self.r#alternate_name)
336 })?;
337 } else {
338 serialize_struct.skip_field("alternateName")?;
339 }
340 if !Vec::is_empty(&self.r#description) {
341 serialize_struct.serialize_field("description", {
342 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
343 impl<'a> Serialize for SerializeWith<'a> {
344 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
345 where
346 S: Serializer,
347 {
348 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
349 self.0, serializer,
350 )
351 }
352 }
353 &SerializeWith(&self.r#description)
354 })?;
355 } else {
356 serialize_struct.skip_field("description")?;
357 }
358 if !Vec::is_empty(&self.r#disambiguating_description) {
359 serialize_struct.serialize_field("disambiguatingDescription", {
360 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
361 impl<'a> Serialize for SerializeWith<'a> {
362 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
363 where
364 S: Serializer,
365 {
366 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
367 self.0, serializer,
368 )
369 }
370 }
371 &SerializeWith(&self.r#disambiguating_description)
372 })?;
373 } else {
374 serialize_struct.skip_field("disambiguatingDescription")?;
375 }
376 if !Vec::is_empty(&self.r#identifier) {
377 serialize_struct.serialize_field("identifier", {
378 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
379 impl<'a> Serialize for SerializeWith<'a> {
380 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
381 where
382 S: Serializer,
383 {
384 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
385 self.0, serializer,
386 )
387 }
388 }
389 &SerializeWith(&self.r#identifier)
390 })?;
391 } else {
392 serialize_struct.skip_field("identifier")?;
393 }
394 if !Vec::is_empty(&self.r#image) {
395 serialize_struct.serialize_field("image", {
396 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
397 impl<'a> Serialize for SerializeWith<'a> {
398 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
399 where
400 S: Serializer,
401 {
402 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
403 self.0, serializer,
404 )
405 }
406 }
407 &SerializeWith(&self.r#image)
408 })?;
409 } else {
410 serialize_struct.skip_field("image")?;
411 }
412 if !Vec::is_empty(&self.r#main_entity_of_page) {
413 serialize_struct.serialize_field("mainEntityOfPage", {
414 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
415 impl<'a> Serialize for SerializeWith<'a> {
416 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
417 where
418 S: Serializer,
419 {
420 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
421 self.0, serializer,
422 )
423 }
424 }
425 &SerializeWith(&self.r#main_entity_of_page)
426 })?;
427 } else {
428 serialize_struct.skip_field("mainEntityOfPage")?;
429 }
430 if !Vec::is_empty(&self.r#name) {
431 serialize_struct.serialize_field("name", {
432 struct SerializeWith<'a>(&'a Vec<NameProperty>);
433 impl<'a> Serialize for SerializeWith<'a> {
434 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
435 where
436 S: Serializer,
437 {
438 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
439 self.0, serializer,
440 )
441 }
442 }
443 &SerializeWith(&self.r#name)
444 })?;
445 } else {
446 serialize_struct.skip_field("name")?;
447 }
448 if !Vec::is_empty(&self.r#potential_action) {
449 serialize_struct.serialize_field("potentialAction", {
450 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
451 impl<'a> Serialize for SerializeWith<'a> {
452 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
453 where
454 S: Serializer,
455 {
456 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
457 self.0, serializer,
458 )
459 }
460 }
461 &SerializeWith(&self.r#potential_action)
462 })?;
463 } else {
464 serialize_struct.skip_field("potentialAction")?;
465 }
466 if !Vec::is_empty(&self.r#same_as) {
467 serialize_struct.serialize_field("sameAs", {
468 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
469 impl<'a> Serialize for SerializeWith<'a> {
470 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
471 where
472 S: Serializer,
473 {
474 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
475 self.0, serializer,
476 )
477 }
478 }
479 &SerializeWith(&self.r#same_as)
480 })?;
481 } else {
482 serialize_struct.skip_field("sameAs")?;
483 }
484 if !Vec::is_empty(&self.r#subject_of) {
485 serialize_struct.serialize_field("subjectOf", {
486 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
487 impl<'a> Serialize for SerializeWith<'a> {
488 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
489 where
490 S: Serializer,
491 {
492 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
493 self.0, serializer,
494 )
495 }
496 }
497 &SerializeWith(&self.r#subject_of)
498 })?;
499 } else {
500 serialize_struct.skip_field("subjectOf")?;
501 }
502 if !Vec::is_empty(&self.r#url) {
503 serialize_struct.serialize_field("url", {
504 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
505 impl<'a> Serialize for SerializeWith<'a> {
506 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
507 where
508 S: Serializer,
509 {
510 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
511 self.0, serializer,
512 )
513 }
514 }
515 &SerializeWith(&self.r#url)
516 })?;
517 } else {
518 serialize_struct.skip_field("url")?;
519 }
520 serialize_struct.end()
521 }
522 }
523 impl<'de> Deserialize<'de> for EndorsementRating {
524 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
525 where
526 D: Deserializer<'de>,
527 {
528 enum Field {
529 Author,
530 BestRating,
531 RatingExplanation,
532 RatingValue,
533 ReviewAspect,
534 WorstRating,
535 AdditionalType,
536 AlternateName,
537 Description,
538 DisambiguatingDescription,
539 Identifier,
540 Image,
541 MainEntityOfPage,
542 Name,
543 PotentialAction,
544 SameAs,
545 SubjectOf,
546 Url,
547 Ignore,
548 }
549 struct FieldVisitor;
550 impl<'de> Visitor<'de> for FieldVisitor {
551 type Value = Field;
552 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
553 formatter.write_str("field identifier")
554 }
555 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
556 where
557 E: de::Error,
558 {
559 match value {
560 "author" => Ok(Field::Author),
561 "bestRating" => Ok(Field::BestRating),
562 "ratingExplanation" => Ok(Field::RatingExplanation),
563 "ratingValue" => Ok(Field::RatingValue),
564 "reviewAspect" => Ok(Field::ReviewAspect),
565 "worstRating" => Ok(Field::WorstRating),
566 "additionalType" => Ok(Field::AdditionalType),
567 "alternateName" => Ok(Field::AlternateName),
568 "description" => Ok(Field::Description),
569 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
570 "identifier" => Ok(Field::Identifier),
571 "image" => Ok(Field::Image),
572 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
573 "name" => Ok(Field::Name),
574 "potentialAction" => Ok(Field::PotentialAction),
575 "sameAs" => Ok(Field::SameAs),
576 "subjectOf" => Ok(Field::SubjectOf),
577 "url" => Ok(Field::Url),
578 "id" | "type" => Ok(Field::Ignore),
579 _ => Err(de::Error::unknown_field(value, FIELDS)),
580 }
581 }
582 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
583 where
584 E: de::Error,
585 {
586 match value {
587 b"author" => Ok(Field::Author),
588 b"bestRating" => Ok(Field::BestRating),
589 b"ratingExplanation" => Ok(Field::RatingExplanation),
590 b"ratingValue" => Ok(Field::RatingValue),
591 b"reviewAspect" => Ok(Field::ReviewAspect),
592 b"worstRating" => Ok(Field::WorstRating),
593 b"additionalType" => Ok(Field::AdditionalType),
594 b"alternateName" => Ok(Field::AlternateName),
595 b"description" => Ok(Field::Description),
596 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
597 b"identifier" => Ok(Field::Identifier),
598 b"image" => Ok(Field::Image),
599 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
600 b"name" => Ok(Field::Name),
601 b"potentialAction" => Ok(Field::PotentialAction),
602 b"sameAs" => Ok(Field::SameAs),
603 b"subjectOf" => Ok(Field::SubjectOf),
604 b"url" => Ok(Field::Url),
605 b"id" | b"type" => Ok(Field::Ignore),
606 _ => {
607 let value = &String::from_utf8_lossy(value);
608 Err(de::Error::unknown_field(value, FIELDS))
609 }
610 }
611 }
612 }
613 impl<'de> Deserialize<'de> for Field {
614 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
615 where
616 D: Deserializer<'de>,
617 {
618 deserializer.deserialize_identifier(FieldVisitor)
619 }
620 }
621 struct ClassVisitor;
622 impl<'de> Visitor<'de> for ClassVisitor {
623 type Value = EndorsementRating;
624 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
625 formatter.write_str("schema.org schema EndorsementRating")
626 }
627 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
628 where
629 A: de::MapAccess<'de>,
630 {
631 let mut r#author_property = None;
632 let mut r#best_rating_property = None;
633 let mut r#rating_explanation_property = None;
634 let mut r#rating_value_property = None;
635 let mut r#review_aspect_property = None;
636 let mut r#worst_rating_property = None;
637 let mut r#additional_type_property = None;
638 let mut r#alternate_name_property = None;
639 let mut r#description_property = None;
640 let mut r#disambiguating_description_property = None;
641 let mut r#identifier_property = None;
642 let mut r#image_property = None;
643 let mut r#main_entity_of_page_property = None;
644 let mut r#name_property = None;
645 let mut r#potential_action_property = None;
646 let mut r#same_as_property = None;
647 let mut r#subject_of_property = None;
648 let mut r#url_property = None;
649 while let Some(key) = map.next_key::<Field>()? {
650 match key {
651 Field::Author => {
652 if r#author_property.is_some() {
653 return Err(<A::Error as de::Error>::duplicate_field("author"));
654 }
655 r#author_property = Some({
656 struct DeserializeWith(Vec<AuthorProperty>);
657 impl<'de> Deserialize<'de> for DeserializeWith {
658 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
659 where
660 D: Deserializer<'de>,
661 {
662 Ok(DeserializeWith(serde_with::As::<
663 serde_with::OneOrMany<serde_with::Same>,
664 >::deserialize(deserializer)?))
665 }
666 }
667 match map.next_value::<DeserializeWith>() {
668 Ok(deserialize_with) => deserialize_with.0,
669 Err(err) => {
670 return Err(err);
671 }
672 }
673 });
674 }
675 Field::BestRating => {
676 if r#best_rating_property.is_some() {
677 return Err(<A::Error as de::Error>::duplicate_field(
678 "bestRating",
679 ));
680 }
681 r#best_rating_property = Some({
682 struct DeserializeWith(Vec<BestRatingProperty>);
683 impl<'de> Deserialize<'de> for DeserializeWith {
684 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
685 where
686 D: Deserializer<'de>,
687 {
688 Ok(DeserializeWith(serde_with::As::<
689 serde_with::OneOrMany<serde_with::Same>,
690 >::deserialize(deserializer)?))
691 }
692 }
693 match map.next_value::<DeserializeWith>() {
694 Ok(deserialize_with) => deserialize_with.0,
695 Err(err) => {
696 return Err(err);
697 }
698 }
699 });
700 }
701 Field::RatingExplanation => {
702 if r#rating_explanation_property.is_some() {
703 return Err(<A::Error as de::Error>::duplicate_field(
704 "ratingExplanation",
705 ));
706 }
707 r#rating_explanation_property = Some({
708 struct DeserializeWith(Vec<RatingExplanationProperty>);
709 impl<'de> Deserialize<'de> for DeserializeWith {
710 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
711 where
712 D: Deserializer<'de>,
713 {
714 Ok(DeserializeWith(serde_with::As::<
715 serde_with::OneOrMany<serde_with::Same>,
716 >::deserialize(deserializer)?))
717 }
718 }
719 match map.next_value::<DeserializeWith>() {
720 Ok(deserialize_with) => deserialize_with.0,
721 Err(err) => {
722 return Err(err);
723 }
724 }
725 });
726 }
727 Field::RatingValue => {
728 if r#rating_value_property.is_some() {
729 return Err(<A::Error as de::Error>::duplicate_field(
730 "ratingValue",
731 ));
732 }
733 r#rating_value_property = Some({
734 struct DeserializeWith(Vec<RatingValueProperty>);
735 impl<'de> Deserialize<'de> for DeserializeWith {
736 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
737 where
738 D: Deserializer<'de>,
739 {
740 Ok(DeserializeWith(serde_with::As::<
741 serde_with::OneOrMany<serde_with::Same>,
742 >::deserialize(deserializer)?))
743 }
744 }
745 match map.next_value::<DeserializeWith>() {
746 Ok(deserialize_with) => deserialize_with.0,
747 Err(err) => {
748 return Err(err);
749 }
750 }
751 });
752 }
753 Field::ReviewAspect => {
754 if r#review_aspect_property.is_some() {
755 return Err(<A::Error as de::Error>::duplicate_field(
756 "reviewAspect",
757 ));
758 }
759 r#review_aspect_property = Some({
760 struct DeserializeWith(Vec<ReviewAspectProperty>);
761 impl<'de> Deserialize<'de> for DeserializeWith {
762 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
763 where
764 D: Deserializer<'de>,
765 {
766 Ok(DeserializeWith(serde_with::As::<
767 serde_with::OneOrMany<serde_with::Same>,
768 >::deserialize(deserializer)?))
769 }
770 }
771 match map.next_value::<DeserializeWith>() {
772 Ok(deserialize_with) => deserialize_with.0,
773 Err(err) => {
774 return Err(err);
775 }
776 }
777 });
778 }
779 Field::WorstRating => {
780 if r#worst_rating_property.is_some() {
781 return Err(<A::Error as de::Error>::duplicate_field(
782 "worstRating",
783 ));
784 }
785 r#worst_rating_property = Some({
786 struct DeserializeWith(Vec<WorstRatingProperty>);
787 impl<'de> Deserialize<'de> for DeserializeWith {
788 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
789 where
790 D: Deserializer<'de>,
791 {
792 Ok(DeserializeWith(serde_with::As::<
793 serde_with::OneOrMany<serde_with::Same>,
794 >::deserialize(deserializer)?))
795 }
796 }
797 match map.next_value::<DeserializeWith>() {
798 Ok(deserialize_with) => deserialize_with.0,
799 Err(err) => {
800 return Err(err);
801 }
802 }
803 });
804 }
805 Field::AdditionalType => {
806 if r#additional_type_property.is_some() {
807 return Err(<A::Error as de::Error>::duplicate_field(
808 "additionalType",
809 ));
810 }
811 r#additional_type_property = Some({
812 struct DeserializeWith(Vec<AdditionalTypeProperty>);
813 impl<'de> Deserialize<'de> for DeserializeWith {
814 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
815 where
816 D: Deserializer<'de>,
817 {
818 Ok(DeserializeWith(serde_with::As::<
819 serde_with::OneOrMany<serde_with::Same>,
820 >::deserialize(deserializer)?))
821 }
822 }
823 match map.next_value::<DeserializeWith>() {
824 Ok(deserialize_with) => deserialize_with.0,
825 Err(err) => {
826 return Err(err);
827 }
828 }
829 });
830 }
831 Field::AlternateName => {
832 if r#alternate_name_property.is_some() {
833 return Err(<A::Error as de::Error>::duplicate_field(
834 "alternateName",
835 ));
836 }
837 r#alternate_name_property = Some({
838 struct DeserializeWith(Vec<AlternateNameProperty>);
839 impl<'de> Deserialize<'de> for DeserializeWith {
840 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
841 where
842 D: Deserializer<'de>,
843 {
844 Ok(DeserializeWith(serde_with::As::<
845 serde_with::OneOrMany<serde_with::Same>,
846 >::deserialize(deserializer)?))
847 }
848 }
849 match map.next_value::<DeserializeWith>() {
850 Ok(deserialize_with) => deserialize_with.0,
851 Err(err) => {
852 return Err(err);
853 }
854 }
855 });
856 }
857 Field::Description => {
858 if r#description_property.is_some() {
859 return Err(<A::Error as de::Error>::duplicate_field(
860 "description",
861 ));
862 }
863 r#description_property = Some({
864 struct DeserializeWith(Vec<DescriptionProperty>);
865 impl<'de> Deserialize<'de> for DeserializeWith {
866 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
867 where
868 D: Deserializer<'de>,
869 {
870 Ok(DeserializeWith(serde_with::As::<
871 serde_with::OneOrMany<serde_with::Same>,
872 >::deserialize(deserializer)?))
873 }
874 }
875 match map.next_value::<DeserializeWith>() {
876 Ok(deserialize_with) => deserialize_with.0,
877 Err(err) => {
878 return Err(err);
879 }
880 }
881 });
882 }
883 Field::DisambiguatingDescription => {
884 if r#disambiguating_description_property.is_some() {
885 return Err(<A::Error as de::Error>::duplicate_field(
886 "disambiguatingDescription",
887 ));
888 }
889 r#disambiguating_description_property = Some({
890 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
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::Identifier => {
910 if r#identifier_property.is_some() {
911 return Err(<A::Error as de::Error>::duplicate_field(
912 "identifier",
913 ));
914 }
915 r#identifier_property = Some({
916 struct DeserializeWith(Vec<IdentifierProperty>);
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::Image => {
936 if r#image_property.is_some() {
937 return Err(<A::Error as de::Error>::duplicate_field("image"));
938 }
939 r#image_property = Some({
940 struct DeserializeWith(Vec<ImageProperty>);
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::MainEntityOfPage => {
960 if r#main_entity_of_page_property.is_some() {
961 return Err(<A::Error as de::Error>::duplicate_field(
962 "mainEntityOfPage",
963 ));
964 }
965 r#main_entity_of_page_property = Some({
966 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
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::Name => {
986 if r#name_property.is_some() {
987 return Err(<A::Error as de::Error>::duplicate_field("name"));
988 }
989 r#name_property = Some({
990 struct DeserializeWith(Vec<NameProperty>);
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::PotentialAction => {
1010 if r#potential_action_property.is_some() {
1011 return Err(<A::Error as de::Error>::duplicate_field(
1012 "potentialAction",
1013 ));
1014 }
1015 r#potential_action_property = Some({
1016 struct DeserializeWith(Vec<PotentialActionProperty>);
1017 impl<'de> Deserialize<'de> for DeserializeWith {
1018 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1019 where
1020 D: Deserializer<'de>,
1021 {
1022 Ok(DeserializeWith(serde_with::As::<
1023 serde_with::OneOrMany<serde_with::Same>,
1024 >::deserialize(deserializer)?))
1025 }
1026 }
1027 match map.next_value::<DeserializeWith>() {
1028 Ok(deserialize_with) => deserialize_with.0,
1029 Err(err) => {
1030 return Err(err);
1031 }
1032 }
1033 });
1034 }
1035 Field::SameAs => {
1036 if r#same_as_property.is_some() {
1037 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1038 }
1039 r#same_as_property = Some({
1040 struct DeserializeWith(Vec<SameAsProperty>);
1041 impl<'de> Deserialize<'de> for DeserializeWith {
1042 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1043 where
1044 D: Deserializer<'de>,
1045 {
1046 Ok(DeserializeWith(serde_with::As::<
1047 serde_with::OneOrMany<serde_with::Same>,
1048 >::deserialize(deserializer)?))
1049 }
1050 }
1051 match map.next_value::<DeserializeWith>() {
1052 Ok(deserialize_with) => deserialize_with.0,
1053 Err(err) => {
1054 return Err(err);
1055 }
1056 }
1057 });
1058 }
1059 Field::SubjectOf => {
1060 if r#subject_of_property.is_some() {
1061 return Err(<A::Error as de::Error>::duplicate_field(
1062 "subjectOf",
1063 ));
1064 }
1065 r#subject_of_property = Some({
1066 struct DeserializeWith(Vec<SubjectOfProperty>);
1067 impl<'de> Deserialize<'de> for DeserializeWith {
1068 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1069 where
1070 D: Deserializer<'de>,
1071 {
1072 Ok(DeserializeWith(serde_with::As::<
1073 serde_with::OneOrMany<serde_with::Same>,
1074 >::deserialize(deserializer)?))
1075 }
1076 }
1077 match map.next_value::<DeserializeWith>() {
1078 Ok(deserialize_with) => deserialize_with.0,
1079 Err(err) => {
1080 return Err(err);
1081 }
1082 }
1083 });
1084 }
1085 Field::Url => {
1086 if r#url_property.is_some() {
1087 return Err(<A::Error as de::Error>::duplicate_field("url"));
1088 }
1089 r#url_property = Some({
1090 struct DeserializeWith(Vec<UrlProperty>);
1091 impl<'de> Deserialize<'de> for DeserializeWith {
1092 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1093 where
1094 D: Deserializer<'de>,
1095 {
1096 Ok(DeserializeWith(serde_with::As::<
1097 serde_with::OneOrMany<serde_with::Same>,
1098 >::deserialize(deserializer)?))
1099 }
1100 }
1101 match map.next_value::<DeserializeWith>() {
1102 Ok(deserialize_with) => deserialize_with.0,
1103 Err(err) => {
1104 return Err(err);
1105 }
1106 }
1107 });
1108 }
1109 Field::Ignore => {
1110 let _ = map.next_value::<de::IgnoredAny>()?;
1111 }
1112 }
1113 }
1114 Ok(EndorsementRating {
1115 r#author: r#author_property.unwrap_or_default(),
1116 r#best_rating: r#best_rating_property.unwrap_or_default(),
1117 r#rating_explanation: r#rating_explanation_property.unwrap_or_default(),
1118 r#rating_value: r#rating_value_property.unwrap_or_default(),
1119 r#review_aspect: r#review_aspect_property.unwrap_or_default(),
1120 r#worst_rating: r#worst_rating_property.unwrap_or_default(),
1121 r#additional_type: r#additional_type_property.unwrap_or_default(),
1122 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1123 r#description: r#description_property.unwrap_or_default(),
1124 r#disambiguating_description: r#disambiguating_description_property
1125 .unwrap_or_default(),
1126 r#identifier: r#identifier_property.unwrap_or_default(),
1127 r#image: r#image_property.unwrap_or_default(),
1128 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1129 r#name: r#name_property.unwrap_or_default(),
1130 r#potential_action: r#potential_action_property.unwrap_or_default(),
1131 r#same_as: r#same_as_property.unwrap_or_default(),
1132 r#subject_of: r#subject_of_property.unwrap_or_default(),
1133 r#url: r#url_property.unwrap_or_default(),
1134 })
1135 }
1136 }
1137 const FIELDS: &[&str] = &[
1138 "author",
1139 "bestRating",
1140 "ratingExplanation",
1141 "ratingValue",
1142 "reviewAspect",
1143 "worstRating",
1144 "additionalType",
1145 "alternateName",
1146 "description",
1147 "disambiguatingDescription",
1148 "identifier",
1149 "image",
1150 "mainEntityOfPage",
1151 "name",
1152 "potentialAction",
1153 "sameAs",
1154 "subjectOf",
1155 "url",
1156 ];
1157 deserializer.deserialize_struct("EndorsementRating", FIELDS, ClassVisitor)
1158 }
1159 }
1160}