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