1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct OfferShippingDetails {
6 pub r#delivery_time: Vec<DeliveryTimeProperty>,
8 pub r#depth: Vec<DepthProperty>,
10 pub r#does_not_ship: Vec<DoesNotShipProperty>,
12 pub r#height: Vec<HeightProperty>,
14 pub r#shipping_destination: Vec<ShippingDestinationProperty>,
16 pub r#shipping_label: Vec<ShippingLabelProperty>,
18 pub r#shipping_origin: Vec<ShippingOriginProperty>,
20 pub r#shipping_rate: Vec<ShippingRateProperty>,
22 pub r#shipping_settings_link: Vec<ShippingSettingsLinkProperty>,
24 pub r#transit_time_label: Vec<TransitTimeLabelProperty>,
26 pub r#weight: Vec<WeightProperty>,
28 pub r#width: Vec<WidthProperty>,
30 pub r#additional_type: Vec<AdditionalTypeProperty>,
32 pub r#alternate_name: Vec<AlternateNameProperty>,
34 pub r#description: Vec<DescriptionProperty>,
36 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
38 pub r#identifier: Vec<IdentifierProperty>,
40 pub r#image: Vec<ImageProperty>,
42 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
44 pub r#name: Vec<NameProperty>,
46 pub r#potential_action: Vec<PotentialActionProperty>,
48 pub r#same_as: Vec<SameAsProperty>,
50 pub r#subject_of: Vec<SubjectOfProperty>,
52 pub r#url: Vec<UrlProperty>,
54}
55pub trait OfferShippingDetailsTrait {
57 fn get_delivery_time(&self) -> &[DeliveryTimeProperty];
59 fn take_delivery_time(&mut self) -> Vec<DeliveryTimeProperty>;
61 fn get_depth(&self) -> &[DepthProperty];
63 fn take_depth(&mut self) -> Vec<DepthProperty>;
65 fn get_does_not_ship(&self) -> &[DoesNotShipProperty];
67 fn take_does_not_ship(&mut self) -> Vec<DoesNotShipProperty>;
69 fn get_height(&self) -> &[HeightProperty];
71 fn take_height(&mut self) -> Vec<HeightProperty>;
73 fn get_shipping_destination(&self) -> &[ShippingDestinationProperty];
75 fn take_shipping_destination(&mut self) -> Vec<ShippingDestinationProperty>;
77 fn get_shipping_label(&self) -> &[ShippingLabelProperty];
79 fn take_shipping_label(&mut self) -> Vec<ShippingLabelProperty>;
81 fn get_shipping_origin(&self) -> &[ShippingOriginProperty];
83 fn take_shipping_origin(&mut self) -> Vec<ShippingOriginProperty>;
85 fn get_shipping_rate(&self) -> &[ShippingRateProperty];
87 fn take_shipping_rate(&mut self) -> Vec<ShippingRateProperty>;
89 fn get_shipping_settings_link(&self) -> &[ShippingSettingsLinkProperty];
91 fn take_shipping_settings_link(&mut self) -> Vec<ShippingSettingsLinkProperty>;
93 fn get_transit_time_label(&self) -> &[TransitTimeLabelProperty];
95 fn take_transit_time_label(&mut self) -> Vec<TransitTimeLabelProperty>;
97 fn get_weight(&self) -> &[WeightProperty];
99 fn take_weight(&mut self) -> Vec<WeightProperty>;
101 fn get_width(&self) -> &[WidthProperty];
103 fn take_width(&mut self) -> Vec<WidthProperty>;
105}
106impl OfferShippingDetailsTrait for OfferShippingDetails {
107 fn get_delivery_time(&self) -> &[DeliveryTimeProperty] {
108 self.r#delivery_time.as_slice()
109 }
110 fn take_delivery_time(&mut self) -> Vec<DeliveryTimeProperty> {
111 std::mem::take(&mut self.r#delivery_time)
112 }
113 fn get_depth(&self) -> &[DepthProperty] {
114 self.r#depth.as_slice()
115 }
116 fn take_depth(&mut self) -> Vec<DepthProperty> {
117 std::mem::take(&mut self.r#depth)
118 }
119 fn get_does_not_ship(&self) -> &[DoesNotShipProperty] {
120 self.r#does_not_ship.as_slice()
121 }
122 fn take_does_not_ship(&mut self) -> Vec<DoesNotShipProperty> {
123 std::mem::take(&mut self.r#does_not_ship)
124 }
125 fn get_height(&self) -> &[HeightProperty] {
126 self.r#height.as_slice()
127 }
128 fn take_height(&mut self) -> Vec<HeightProperty> {
129 std::mem::take(&mut self.r#height)
130 }
131 fn get_shipping_destination(&self) -> &[ShippingDestinationProperty] {
132 self.r#shipping_destination.as_slice()
133 }
134 fn take_shipping_destination(&mut self) -> Vec<ShippingDestinationProperty> {
135 std::mem::take(&mut self.r#shipping_destination)
136 }
137 fn get_shipping_label(&self) -> &[ShippingLabelProperty] {
138 self.r#shipping_label.as_slice()
139 }
140 fn take_shipping_label(&mut self) -> Vec<ShippingLabelProperty> {
141 std::mem::take(&mut self.r#shipping_label)
142 }
143 fn get_shipping_origin(&self) -> &[ShippingOriginProperty] {
144 self.r#shipping_origin.as_slice()
145 }
146 fn take_shipping_origin(&mut self) -> Vec<ShippingOriginProperty> {
147 std::mem::take(&mut self.r#shipping_origin)
148 }
149 fn get_shipping_rate(&self) -> &[ShippingRateProperty] {
150 self.r#shipping_rate.as_slice()
151 }
152 fn take_shipping_rate(&mut self) -> Vec<ShippingRateProperty> {
153 std::mem::take(&mut self.r#shipping_rate)
154 }
155 fn get_shipping_settings_link(&self) -> &[ShippingSettingsLinkProperty] {
156 self.r#shipping_settings_link.as_slice()
157 }
158 fn take_shipping_settings_link(&mut self) -> Vec<ShippingSettingsLinkProperty> {
159 std::mem::take(&mut self.r#shipping_settings_link)
160 }
161 fn get_transit_time_label(&self) -> &[TransitTimeLabelProperty] {
162 self.r#transit_time_label.as_slice()
163 }
164 fn take_transit_time_label(&mut self) -> Vec<TransitTimeLabelProperty> {
165 std::mem::take(&mut self.r#transit_time_label)
166 }
167 fn get_weight(&self) -> &[WeightProperty] {
168 self.r#weight.as_slice()
169 }
170 fn take_weight(&mut self) -> Vec<WeightProperty> {
171 std::mem::take(&mut self.r#weight)
172 }
173 fn get_width(&self) -> &[WidthProperty] {
174 self.r#width.as_slice()
175 }
176 fn take_width(&mut self) -> Vec<WidthProperty> {
177 std::mem::take(&mut self.r#width)
178 }
179}
180impl StructuredValueTrait for OfferShippingDetails {}
181impl ThingTrait for OfferShippingDetails {
182 fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
183 self.r#additional_type.as_slice()
184 }
185 fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
186 std::mem::take(&mut self.r#additional_type)
187 }
188 fn get_alternate_name(&self) -> &[AlternateNameProperty] {
189 self.r#alternate_name.as_slice()
190 }
191 fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
192 std::mem::take(&mut self.r#alternate_name)
193 }
194 fn get_description(&self) -> &[DescriptionProperty] {
195 self.r#description.as_slice()
196 }
197 fn take_description(&mut self) -> Vec<DescriptionProperty> {
198 std::mem::take(&mut self.r#description)
199 }
200 fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
201 self.r#disambiguating_description.as_slice()
202 }
203 fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
204 std::mem::take(&mut self.r#disambiguating_description)
205 }
206 fn get_identifier(&self) -> &[IdentifierProperty] {
207 self.r#identifier.as_slice()
208 }
209 fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
210 std::mem::take(&mut self.r#identifier)
211 }
212 fn get_image(&self) -> &[ImageProperty] {
213 self.r#image.as_slice()
214 }
215 fn take_image(&mut self) -> Vec<ImageProperty> {
216 std::mem::take(&mut self.r#image)
217 }
218 fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
219 self.r#main_entity_of_page.as_slice()
220 }
221 fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
222 std::mem::take(&mut self.r#main_entity_of_page)
223 }
224 fn get_name(&self) -> &[NameProperty] {
225 self.r#name.as_slice()
226 }
227 fn take_name(&mut self) -> Vec<NameProperty> {
228 std::mem::take(&mut self.r#name)
229 }
230 fn get_potential_action(&self) -> &[PotentialActionProperty] {
231 self.r#potential_action.as_slice()
232 }
233 fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
234 std::mem::take(&mut self.r#potential_action)
235 }
236 fn get_same_as(&self) -> &[SameAsProperty] {
237 self.r#same_as.as_slice()
238 }
239 fn take_same_as(&mut self) -> Vec<SameAsProperty> {
240 std::mem::take(&mut self.r#same_as)
241 }
242 fn get_subject_of(&self) -> &[SubjectOfProperty] {
243 self.r#subject_of.as_slice()
244 }
245 fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
246 std::mem::take(&mut self.r#subject_of)
247 }
248 fn get_url(&self) -> &[UrlProperty] {
249 self.r#url.as_slice()
250 }
251 fn take_url(&mut self) -> Vec<UrlProperty> {
252 std::mem::take(&mut self.r#url)
253 }
254}
255#[cfg(feature = "serde")]
256mod serde {
257 use std::{fmt, fmt::Formatter};
258
259 use ::serde::{
260 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
261 };
262
263 use super::*;
264 impl Serialize for OfferShippingDetails {
265 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
266 where
267 S: Serializer,
268 {
269 let len: usize = [
270 !Vec::is_empty(&self.r#delivery_time) as usize,
271 !Vec::is_empty(&self.r#depth) as usize,
272 !Vec::is_empty(&self.r#does_not_ship) as usize,
273 !Vec::is_empty(&self.r#height) as usize,
274 !Vec::is_empty(&self.r#shipping_destination) as usize,
275 !Vec::is_empty(&self.r#shipping_label) as usize,
276 !Vec::is_empty(&self.r#shipping_origin) as usize,
277 !Vec::is_empty(&self.r#shipping_rate) as usize,
278 !Vec::is_empty(&self.r#shipping_settings_link) as usize,
279 !Vec::is_empty(&self.r#transit_time_label) as usize,
280 !Vec::is_empty(&self.r#weight) as usize,
281 !Vec::is_empty(&self.r#width) as usize,
282 !Vec::is_empty(&self.r#additional_type) as usize,
283 !Vec::is_empty(&self.r#alternate_name) as usize,
284 !Vec::is_empty(&self.r#description) as usize,
285 !Vec::is_empty(&self.r#disambiguating_description) as usize,
286 !Vec::is_empty(&self.r#identifier) as usize,
287 !Vec::is_empty(&self.r#image) as usize,
288 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
289 !Vec::is_empty(&self.r#name) as usize,
290 !Vec::is_empty(&self.r#potential_action) as usize,
291 !Vec::is_empty(&self.r#same_as) as usize,
292 !Vec::is_empty(&self.r#subject_of) as usize,
293 !Vec::is_empty(&self.r#url) as usize,
294 ]
295 .iter()
296 .sum();
297 let mut serialize_struct =
298 Serializer::serialize_struct(serializer, "OfferShippingDetails", len)?;
299 if !Vec::is_empty(&self.r#delivery_time) {
300 serialize_struct.serialize_field("deliveryTime", {
301 struct SerializeWith<'a>(&'a Vec<DeliveryTimeProperty>);
302 impl<'a> Serialize for SerializeWith<'a> {
303 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
304 where
305 S: Serializer,
306 {
307 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
308 self.0, serializer,
309 )
310 }
311 }
312 &SerializeWith(&self.r#delivery_time)
313 })?;
314 } else {
315 serialize_struct.skip_field("deliveryTime")?;
316 }
317 if !Vec::is_empty(&self.r#depth) {
318 serialize_struct.serialize_field("depth", {
319 struct SerializeWith<'a>(&'a Vec<DepthProperty>);
320 impl<'a> Serialize for SerializeWith<'a> {
321 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
322 where
323 S: Serializer,
324 {
325 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
326 self.0, serializer,
327 )
328 }
329 }
330 &SerializeWith(&self.r#depth)
331 })?;
332 } else {
333 serialize_struct.skip_field("depth")?;
334 }
335 if !Vec::is_empty(&self.r#does_not_ship) {
336 serialize_struct.serialize_field("doesNotShip", {
337 struct SerializeWith<'a>(&'a Vec<DoesNotShipProperty>);
338 impl<'a> Serialize for SerializeWith<'a> {
339 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
340 where
341 S: Serializer,
342 {
343 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
344 self.0, serializer,
345 )
346 }
347 }
348 &SerializeWith(&self.r#does_not_ship)
349 })?;
350 } else {
351 serialize_struct.skip_field("doesNotShip")?;
352 }
353 if !Vec::is_empty(&self.r#height) {
354 serialize_struct.serialize_field("height", {
355 struct SerializeWith<'a>(&'a Vec<HeightProperty>);
356 impl<'a> Serialize for SerializeWith<'a> {
357 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
358 where
359 S: Serializer,
360 {
361 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
362 self.0, serializer,
363 )
364 }
365 }
366 &SerializeWith(&self.r#height)
367 })?;
368 } else {
369 serialize_struct.skip_field("height")?;
370 }
371 if !Vec::is_empty(&self.r#shipping_destination) {
372 serialize_struct.serialize_field("shippingDestination", {
373 struct SerializeWith<'a>(&'a Vec<ShippingDestinationProperty>);
374 impl<'a> Serialize for SerializeWith<'a> {
375 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
376 where
377 S: Serializer,
378 {
379 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
380 self.0, serializer,
381 )
382 }
383 }
384 &SerializeWith(&self.r#shipping_destination)
385 })?;
386 } else {
387 serialize_struct.skip_field("shippingDestination")?;
388 }
389 if !Vec::is_empty(&self.r#shipping_label) {
390 serialize_struct.serialize_field("shippingLabel", {
391 struct SerializeWith<'a>(&'a Vec<ShippingLabelProperty>);
392 impl<'a> Serialize for SerializeWith<'a> {
393 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
394 where
395 S: Serializer,
396 {
397 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
398 self.0, serializer,
399 )
400 }
401 }
402 &SerializeWith(&self.r#shipping_label)
403 })?;
404 } else {
405 serialize_struct.skip_field("shippingLabel")?;
406 }
407 if !Vec::is_empty(&self.r#shipping_origin) {
408 serialize_struct.serialize_field("shippingOrigin", {
409 struct SerializeWith<'a>(&'a Vec<ShippingOriginProperty>);
410 impl<'a> Serialize for SerializeWith<'a> {
411 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
412 where
413 S: Serializer,
414 {
415 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
416 self.0, serializer,
417 )
418 }
419 }
420 &SerializeWith(&self.r#shipping_origin)
421 })?;
422 } else {
423 serialize_struct.skip_field("shippingOrigin")?;
424 }
425 if !Vec::is_empty(&self.r#shipping_rate) {
426 serialize_struct.serialize_field("shippingRate", {
427 struct SerializeWith<'a>(&'a Vec<ShippingRateProperty>);
428 impl<'a> Serialize for SerializeWith<'a> {
429 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
430 where
431 S: Serializer,
432 {
433 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
434 self.0, serializer,
435 )
436 }
437 }
438 &SerializeWith(&self.r#shipping_rate)
439 })?;
440 } else {
441 serialize_struct.skip_field("shippingRate")?;
442 }
443 if !Vec::is_empty(&self.r#shipping_settings_link) {
444 serialize_struct.serialize_field("shippingSettingsLink", {
445 struct SerializeWith<'a>(&'a Vec<ShippingSettingsLinkProperty>);
446 impl<'a> Serialize for SerializeWith<'a> {
447 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
448 where
449 S: Serializer,
450 {
451 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
452 self.0, serializer,
453 )
454 }
455 }
456 &SerializeWith(&self.r#shipping_settings_link)
457 })?;
458 } else {
459 serialize_struct.skip_field("shippingSettingsLink")?;
460 }
461 if !Vec::is_empty(&self.r#transit_time_label) {
462 serialize_struct.serialize_field("transitTimeLabel", {
463 struct SerializeWith<'a>(&'a Vec<TransitTimeLabelProperty>);
464 impl<'a> Serialize for SerializeWith<'a> {
465 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
466 where
467 S: Serializer,
468 {
469 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
470 self.0, serializer,
471 )
472 }
473 }
474 &SerializeWith(&self.r#transit_time_label)
475 })?;
476 } else {
477 serialize_struct.skip_field("transitTimeLabel")?;
478 }
479 if !Vec::is_empty(&self.r#weight) {
480 serialize_struct.serialize_field("weight", {
481 struct SerializeWith<'a>(&'a Vec<WeightProperty>);
482 impl<'a> Serialize for SerializeWith<'a> {
483 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
484 where
485 S: Serializer,
486 {
487 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
488 self.0, serializer,
489 )
490 }
491 }
492 &SerializeWith(&self.r#weight)
493 })?;
494 } else {
495 serialize_struct.skip_field("weight")?;
496 }
497 if !Vec::is_empty(&self.r#width) {
498 serialize_struct.serialize_field("width", {
499 struct SerializeWith<'a>(&'a Vec<WidthProperty>);
500 impl<'a> Serialize for SerializeWith<'a> {
501 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
502 where
503 S: Serializer,
504 {
505 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
506 self.0, serializer,
507 )
508 }
509 }
510 &SerializeWith(&self.r#width)
511 })?;
512 } else {
513 serialize_struct.skip_field("width")?;
514 }
515 if !Vec::is_empty(&self.r#additional_type) {
516 serialize_struct.serialize_field("additionalType", {
517 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
518 impl<'a> Serialize for SerializeWith<'a> {
519 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
520 where
521 S: Serializer,
522 {
523 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
524 self.0, serializer,
525 )
526 }
527 }
528 &SerializeWith(&self.r#additional_type)
529 })?;
530 } else {
531 serialize_struct.skip_field("additionalType")?;
532 }
533 if !Vec::is_empty(&self.r#alternate_name) {
534 serialize_struct.serialize_field("alternateName", {
535 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
536 impl<'a> Serialize for SerializeWith<'a> {
537 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
538 where
539 S: Serializer,
540 {
541 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
542 self.0, serializer,
543 )
544 }
545 }
546 &SerializeWith(&self.r#alternate_name)
547 })?;
548 } else {
549 serialize_struct.skip_field("alternateName")?;
550 }
551 if !Vec::is_empty(&self.r#description) {
552 serialize_struct.serialize_field("description", {
553 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
554 impl<'a> Serialize for SerializeWith<'a> {
555 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
556 where
557 S: Serializer,
558 {
559 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
560 self.0, serializer,
561 )
562 }
563 }
564 &SerializeWith(&self.r#description)
565 })?;
566 } else {
567 serialize_struct.skip_field("description")?;
568 }
569 if !Vec::is_empty(&self.r#disambiguating_description) {
570 serialize_struct.serialize_field("disambiguatingDescription", {
571 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
572 impl<'a> Serialize for SerializeWith<'a> {
573 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
574 where
575 S: Serializer,
576 {
577 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
578 self.0, serializer,
579 )
580 }
581 }
582 &SerializeWith(&self.r#disambiguating_description)
583 })?;
584 } else {
585 serialize_struct.skip_field("disambiguatingDescription")?;
586 }
587 if !Vec::is_empty(&self.r#identifier) {
588 serialize_struct.serialize_field("identifier", {
589 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
590 impl<'a> Serialize for SerializeWith<'a> {
591 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
592 where
593 S: Serializer,
594 {
595 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
596 self.0, serializer,
597 )
598 }
599 }
600 &SerializeWith(&self.r#identifier)
601 })?;
602 } else {
603 serialize_struct.skip_field("identifier")?;
604 }
605 if !Vec::is_empty(&self.r#image) {
606 serialize_struct.serialize_field("image", {
607 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
608 impl<'a> Serialize for SerializeWith<'a> {
609 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
610 where
611 S: Serializer,
612 {
613 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
614 self.0, serializer,
615 )
616 }
617 }
618 &SerializeWith(&self.r#image)
619 })?;
620 } else {
621 serialize_struct.skip_field("image")?;
622 }
623 if !Vec::is_empty(&self.r#main_entity_of_page) {
624 serialize_struct.serialize_field("mainEntityOfPage", {
625 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
626 impl<'a> Serialize for SerializeWith<'a> {
627 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
628 where
629 S: Serializer,
630 {
631 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
632 self.0, serializer,
633 )
634 }
635 }
636 &SerializeWith(&self.r#main_entity_of_page)
637 })?;
638 } else {
639 serialize_struct.skip_field("mainEntityOfPage")?;
640 }
641 if !Vec::is_empty(&self.r#name) {
642 serialize_struct.serialize_field("name", {
643 struct SerializeWith<'a>(&'a Vec<NameProperty>);
644 impl<'a> Serialize for SerializeWith<'a> {
645 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
646 where
647 S: Serializer,
648 {
649 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
650 self.0, serializer,
651 )
652 }
653 }
654 &SerializeWith(&self.r#name)
655 })?;
656 } else {
657 serialize_struct.skip_field("name")?;
658 }
659 if !Vec::is_empty(&self.r#potential_action) {
660 serialize_struct.serialize_field("potentialAction", {
661 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
662 impl<'a> Serialize for SerializeWith<'a> {
663 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
664 where
665 S: Serializer,
666 {
667 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
668 self.0, serializer,
669 )
670 }
671 }
672 &SerializeWith(&self.r#potential_action)
673 })?;
674 } else {
675 serialize_struct.skip_field("potentialAction")?;
676 }
677 if !Vec::is_empty(&self.r#same_as) {
678 serialize_struct.serialize_field("sameAs", {
679 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
680 impl<'a> Serialize for SerializeWith<'a> {
681 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
682 where
683 S: Serializer,
684 {
685 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
686 self.0, serializer,
687 )
688 }
689 }
690 &SerializeWith(&self.r#same_as)
691 })?;
692 } else {
693 serialize_struct.skip_field("sameAs")?;
694 }
695 if !Vec::is_empty(&self.r#subject_of) {
696 serialize_struct.serialize_field("subjectOf", {
697 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
698 impl<'a> Serialize for SerializeWith<'a> {
699 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
700 where
701 S: Serializer,
702 {
703 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
704 self.0, serializer,
705 )
706 }
707 }
708 &SerializeWith(&self.r#subject_of)
709 })?;
710 } else {
711 serialize_struct.skip_field("subjectOf")?;
712 }
713 if !Vec::is_empty(&self.r#url) {
714 serialize_struct.serialize_field("url", {
715 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
716 impl<'a> Serialize for SerializeWith<'a> {
717 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
718 where
719 S: Serializer,
720 {
721 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
722 self.0, serializer,
723 )
724 }
725 }
726 &SerializeWith(&self.r#url)
727 })?;
728 } else {
729 serialize_struct.skip_field("url")?;
730 }
731 serialize_struct.end()
732 }
733 }
734 impl<'de> Deserialize<'de> for OfferShippingDetails {
735 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
736 where
737 D: Deserializer<'de>,
738 {
739 enum Field {
740 DeliveryTime,
741 Depth,
742 DoesNotShip,
743 Height,
744 ShippingDestination,
745 ShippingLabel,
746 ShippingOrigin,
747 ShippingRate,
748 ShippingSettingsLink,
749 TransitTimeLabel,
750 Weight,
751 Width,
752 AdditionalType,
753 AlternateName,
754 Description,
755 DisambiguatingDescription,
756 Identifier,
757 Image,
758 MainEntityOfPage,
759 Name,
760 PotentialAction,
761 SameAs,
762 SubjectOf,
763 Url,
764 Ignore,
765 }
766 struct FieldVisitor;
767 impl<'de> Visitor<'de> for FieldVisitor {
768 type Value = Field;
769 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
770 formatter.write_str("field identifier")
771 }
772 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
773 where
774 E: de::Error,
775 {
776 match value {
777 "deliveryTime" => Ok(Field::DeliveryTime),
778 "depth" => Ok(Field::Depth),
779 "doesNotShip" => Ok(Field::DoesNotShip),
780 "height" => Ok(Field::Height),
781 "shippingDestination" => Ok(Field::ShippingDestination),
782 "shippingLabel" => Ok(Field::ShippingLabel),
783 "shippingOrigin" => Ok(Field::ShippingOrigin),
784 "shippingRate" => Ok(Field::ShippingRate),
785 "shippingSettingsLink" => Ok(Field::ShippingSettingsLink),
786 "transitTimeLabel" => Ok(Field::TransitTimeLabel),
787 "weight" => Ok(Field::Weight),
788 "width" => Ok(Field::Width),
789 "additionalType" => Ok(Field::AdditionalType),
790 "alternateName" => Ok(Field::AlternateName),
791 "description" => Ok(Field::Description),
792 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
793 "identifier" => Ok(Field::Identifier),
794 "image" => Ok(Field::Image),
795 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
796 "name" => Ok(Field::Name),
797 "potentialAction" => Ok(Field::PotentialAction),
798 "sameAs" => Ok(Field::SameAs),
799 "subjectOf" => Ok(Field::SubjectOf),
800 "url" => Ok(Field::Url),
801 "id" | "type" => Ok(Field::Ignore),
802 _ => Err(de::Error::unknown_field(value, FIELDS)),
803 }
804 }
805 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
806 where
807 E: de::Error,
808 {
809 match value {
810 b"deliveryTime" => Ok(Field::DeliveryTime),
811 b"depth" => Ok(Field::Depth),
812 b"doesNotShip" => Ok(Field::DoesNotShip),
813 b"height" => Ok(Field::Height),
814 b"shippingDestination" => Ok(Field::ShippingDestination),
815 b"shippingLabel" => Ok(Field::ShippingLabel),
816 b"shippingOrigin" => Ok(Field::ShippingOrigin),
817 b"shippingRate" => Ok(Field::ShippingRate),
818 b"shippingSettingsLink" => Ok(Field::ShippingSettingsLink),
819 b"transitTimeLabel" => Ok(Field::TransitTimeLabel),
820 b"weight" => Ok(Field::Weight),
821 b"width" => Ok(Field::Width),
822 b"additionalType" => Ok(Field::AdditionalType),
823 b"alternateName" => Ok(Field::AlternateName),
824 b"description" => Ok(Field::Description),
825 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
826 b"identifier" => Ok(Field::Identifier),
827 b"image" => Ok(Field::Image),
828 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
829 b"name" => Ok(Field::Name),
830 b"potentialAction" => Ok(Field::PotentialAction),
831 b"sameAs" => Ok(Field::SameAs),
832 b"subjectOf" => Ok(Field::SubjectOf),
833 b"url" => Ok(Field::Url),
834 b"id" | b"type" => Ok(Field::Ignore),
835 _ => {
836 let value = &String::from_utf8_lossy(value);
837 Err(de::Error::unknown_field(value, FIELDS))
838 }
839 }
840 }
841 }
842 impl<'de> Deserialize<'de> for Field {
843 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
844 where
845 D: Deserializer<'de>,
846 {
847 deserializer.deserialize_identifier(FieldVisitor)
848 }
849 }
850 struct ClassVisitor;
851 impl<'de> Visitor<'de> for ClassVisitor {
852 type Value = OfferShippingDetails;
853 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
854 formatter.write_str("schema.org schema OfferShippingDetails")
855 }
856 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
857 where
858 A: de::MapAccess<'de>,
859 {
860 let mut r#delivery_time_property = None;
861 let mut r#depth_property = None;
862 let mut r#does_not_ship_property = None;
863 let mut r#height_property = None;
864 let mut r#shipping_destination_property = None;
865 let mut r#shipping_label_property = None;
866 let mut r#shipping_origin_property = None;
867 let mut r#shipping_rate_property = None;
868 let mut r#shipping_settings_link_property = None;
869 let mut r#transit_time_label_property = None;
870 let mut r#weight_property = None;
871 let mut r#width_property = None;
872 let mut r#additional_type_property = None;
873 let mut r#alternate_name_property = None;
874 let mut r#description_property = None;
875 let mut r#disambiguating_description_property = None;
876 let mut r#identifier_property = None;
877 let mut r#image_property = None;
878 let mut r#main_entity_of_page_property = None;
879 let mut r#name_property = None;
880 let mut r#potential_action_property = None;
881 let mut r#same_as_property = None;
882 let mut r#subject_of_property = None;
883 let mut r#url_property = None;
884 while let Some(key) = map.next_key::<Field>()? {
885 match key {
886 Field::DeliveryTime => {
887 if r#delivery_time_property.is_some() {
888 return Err(<A::Error as de::Error>::duplicate_field(
889 "deliveryTime",
890 ));
891 }
892 r#delivery_time_property = Some({
893 struct DeserializeWith(Vec<DeliveryTimeProperty>);
894 impl<'de> Deserialize<'de> for DeserializeWith {
895 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
896 where
897 D: Deserializer<'de>,
898 {
899 Ok(DeserializeWith(serde_with::As::<
900 serde_with::OneOrMany<serde_with::Same>,
901 >::deserialize(deserializer)?))
902 }
903 }
904 match map.next_value::<DeserializeWith>() {
905 Ok(deserialize_with) => deserialize_with.0,
906 Err(err) => {
907 return Err(err);
908 }
909 }
910 });
911 }
912 Field::Depth => {
913 if r#depth_property.is_some() {
914 return Err(<A::Error as de::Error>::duplicate_field("depth"));
915 }
916 r#depth_property = Some({
917 struct DeserializeWith(Vec<DepthProperty>);
918 impl<'de> Deserialize<'de> for DeserializeWith {
919 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
920 where
921 D: Deserializer<'de>,
922 {
923 Ok(DeserializeWith(serde_with::As::<
924 serde_with::OneOrMany<serde_with::Same>,
925 >::deserialize(deserializer)?))
926 }
927 }
928 match map.next_value::<DeserializeWith>() {
929 Ok(deserialize_with) => deserialize_with.0,
930 Err(err) => {
931 return Err(err);
932 }
933 }
934 });
935 }
936 Field::DoesNotShip => {
937 if r#does_not_ship_property.is_some() {
938 return Err(<A::Error as de::Error>::duplicate_field(
939 "doesNotShip",
940 ));
941 }
942 r#does_not_ship_property = Some({
943 struct DeserializeWith(Vec<DoesNotShipProperty>);
944 impl<'de> Deserialize<'de> for DeserializeWith {
945 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
946 where
947 D: Deserializer<'de>,
948 {
949 Ok(DeserializeWith(serde_with::As::<
950 serde_with::OneOrMany<serde_with::Same>,
951 >::deserialize(deserializer)?))
952 }
953 }
954 match map.next_value::<DeserializeWith>() {
955 Ok(deserialize_with) => deserialize_with.0,
956 Err(err) => {
957 return Err(err);
958 }
959 }
960 });
961 }
962 Field::Height => {
963 if r#height_property.is_some() {
964 return Err(<A::Error as de::Error>::duplicate_field("height"));
965 }
966 r#height_property = Some({
967 struct DeserializeWith(Vec<HeightProperty>);
968 impl<'de> Deserialize<'de> for DeserializeWith {
969 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
970 where
971 D: Deserializer<'de>,
972 {
973 Ok(DeserializeWith(serde_with::As::<
974 serde_with::OneOrMany<serde_with::Same>,
975 >::deserialize(deserializer)?))
976 }
977 }
978 match map.next_value::<DeserializeWith>() {
979 Ok(deserialize_with) => deserialize_with.0,
980 Err(err) => {
981 return Err(err);
982 }
983 }
984 });
985 }
986 Field::ShippingDestination => {
987 if r#shipping_destination_property.is_some() {
988 return Err(<A::Error as de::Error>::duplicate_field(
989 "shippingDestination",
990 ));
991 }
992 r#shipping_destination_property = Some({
993 struct DeserializeWith(Vec<ShippingDestinationProperty>);
994 impl<'de> Deserialize<'de> for DeserializeWith {
995 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
996 where
997 D: Deserializer<'de>,
998 {
999 Ok(DeserializeWith(serde_with::As::<
1000 serde_with::OneOrMany<serde_with::Same>,
1001 >::deserialize(deserializer)?))
1002 }
1003 }
1004 match map.next_value::<DeserializeWith>() {
1005 Ok(deserialize_with) => deserialize_with.0,
1006 Err(err) => {
1007 return Err(err);
1008 }
1009 }
1010 });
1011 }
1012 Field::ShippingLabel => {
1013 if r#shipping_label_property.is_some() {
1014 return Err(<A::Error as de::Error>::duplicate_field(
1015 "shippingLabel",
1016 ));
1017 }
1018 r#shipping_label_property = Some({
1019 struct DeserializeWith(Vec<ShippingLabelProperty>);
1020 impl<'de> Deserialize<'de> for DeserializeWith {
1021 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1022 where
1023 D: Deserializer<'de>,
1024 {
1025 Ok(DeserializeWith(serde_with::As::<
1026 serde_with::OneOrMany<serde_with::Same>,
1027 >::deserialize(deserializer)?))
1028 }
1029 }
1030 match map.next_value::<DeserializeWith>() {
1031 Ok(deserialize_with) => deserialize_with.0,
1032 Err(err) => {
1033 return Err(err);
1034 }
1035 }
1036 });
1037 }
1038 Field::ShippingOrigin => {
1039 if r#shipping_origin_property.is_some() {
1040 return Err(<A::Error as de::Error>::duplicate_field(
1041 "shippingOrigin",
1042 ));
1043 }
1044 r#shipping_origin_property = Some({
1045 struct DeserializeWith(Vec<ShippingOriginProperty>);
1046 impl<'de> Deserialize<'de> for DeserializeWith {
1047 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1048 where
1049 D: Deserializer<'de>,
1050 {
1051 Ok(DeserializeWith(serde_with::As::<
1052 serde_with::OneOrMany<serde_with::Same>,
1053 >::deserialize(deserializer)?))
1054 }
1055 }
1056 match map.next_value::<DeserializeWith>() {
1057 Ok(deserialize_with) => deserialize_with.0,
1058 Err(err) => {
1059 return Err(err);
1060 }
1061 }
1062 });
1063 }
1064 Field::ShippingRate => {
1065 if r#shipping_rate_property.is_some() {
1066 return Err(<A::Error as de::Error>::duplicate_field(
1067 "shippingRate",
1068 ));
1069 }
1070 r#shipping_rate_property = Some({
1071 struct DeserializeWith(Vec<ShippingRateProperty>);
1072 impl<'de> Deserialize<'de> for DeserializeWith {
1073 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1074 where
1075 D: Deserializer<'de>,
1076 {
1077 Ok(DeserializeWith(serde_with::As::<
1078 serde_with::OneOrMany<serde_with::Same>,
1079 >::deserialize(deserializer)?))
1080 }
1081 }
1082 match map.next_value::<DeserializeWith>() {
1083 Ok(deserialize_with) => deserialize_with.0,
1084 Err(err) => {
1085 return Err(err);
1086 }
1087 }
1088 });
1089 }
1090 Field::ShippingSettingsLink => {
1091 if r#shipping_settings_link_property.is_some() {
1092 return Err(<A::Error as de::Error>::duplicate_field(
1093 "shippingSettingsLink",
1094 ));
1095 }
1096 r#shipping_settings_link_property = Some({
1097 struct DeserializeWith(Vec<ShippingSettingsLinkProperty>);
1098 impl<'de> Deserialize<'de> for DeserializeWith {
1099 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1100 where
1101 D: Deserializer<'de>,
1102 {
1103 Ok(DeserializeWith(serde_with::As::<
1104 serde_with::OneOrMany<serde_with::Same>,
1105 >::deserialize(deserializer)?))
1106 }
1107 }
1108 match map.next_value::<DeserializeWith>() {
1109 Ok(deserialize_with) => deserialize_with.0,
1110 Err(err) => {
1111 return Err(err);
1112 }
1113 }
1114 });
1115 }
1116 Field::TransitTimeLabel => {
1117 if r#transit_time_label_property.is_some() {
1118 return Err(<A::Error as de::Error>::duplicate_field(
1119 "transitTimeLabel",
1120 ));
1121 }
1122 r#transit_time_label_property = Some({
1123 struct DeserializeWith(Vec<TransitTimeLabelProperty>);
1124 impl<'de> Deserialize<'de> for DeserializeWith {
1125 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1126 where
1127 D: Deserializer<'de>,
1128 {
1129 Ok(DeserializeWith(serde_with::As::<
1130 serde_with::OneOrMany<serde_with::Same>,
1131 >::deserialize(deserializer)?))
1132 }
1133 }
1134 match map.next_value::<DeserializeWith>() {
1135 Ok(deserialize_with) => deserialize_with.0,
1136 Err(err) => {
1137 return Err(err);
1138 }
1139 }
1140 });
1141 }
1142 Field::Weight => {
1143 if r#weight_property.is_some() {
1144 return Err(<A::Error as de::Error>::duplicate_field("weight"));
1145 }
1146 r#weight_property = Some({
1147 struct DeserializeWith(Vec<WeightProperty>);
1148 impl<'de> Deserialize<'de> for DeserializeWith {
1149 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1150 where
1151 D: Deserializer<'de>,
1152 {
1153 Ok(DeserializeWith(serde_with::As::<
1154 serde_with::OneOrMany<serde_with::Same>,
1155 >::deserialize(deserializer)?))
1156 }
1157 }
1158 match map.next_value::<DeserializeWith>() {
1159 Ok(deserialize_with) => deserialize_with.0,
1160 Err(err) => {
1161 return Err(err);
1162 }
1163 }
1164 });
1165 }
1166 Field::Width => {
1167 if r#width_property.is_some() {
1168 return Err(<A::Error as de::Error>::duplicate_field("width"));
1169 }
1170 r#width_property = Some({
1171 struct DeserializeWith(Vec<WidthProperty>);
1172 impl<'de> Deserialize<'de> for DeserializeWith {
1173 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1174 where
1175 D: Deserializer<'de>,
1176 {
1177 Ok(DeserializeWith(serde_with::As::<
1178 serde_with::OneOrMany<serde_with::Same>,
1179 >::deserialize(deserializer)?))
1180 }
1181 }
1182 match map.next_value::<DeserializeWith>() {
1183 Ok(deserialize_with) => deserialize_with.0,
1184 Err(err) => {
1185 return Err(err);
1186 }
1187 }
1188 });
1189 }
1190 Field::AdditionalType => {
1191 if r#additional_type_property.is_some() {
1192 return Err(<A::Error as de::Error>::duplicate_field(
1193 "additionalType",
1194 ));
1195 }
1196 r#additional_type_property = Some({
1197 struct DeserializeWith(Vec<AdditionalTypeProperty>);
1198 impl<'de> Deserialize<'de> for DeserializeWith {
1199 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1200 where
1201 D: Deserializer<'de>,
1202 {
1203 Ok(DeserializeWith(serde_with::As::<
1204 serde_with::OneOrMany<serde_with::Same>,
1205 >::deserialize(deserializer)?))
1206 }
1207 }
1208 match map.next_value::<DeserializeWith>() {
1209 Ok(deserialize_with) => deserialize_with.0,
1210 Err(err) => {
1211 return Err(err);
1212 }
1213 }
1214 });
1215 }
1216 Field::AlternateName => {
1217 if r#alternate_name_property.is_some() {
1218 return Err(<A::Error as de::Error>::duplicate_field(
1219 "alternateName",
1220 ));
1221 }
1222 r#alternate_name_property = Some({
1223 struct DeserializeWith(Vec<AlternateNameProperty>);
1224 impl<'de> Deserialize<'de> for DeserializeWith {
1225 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1226 where
1227 D: Deserializer<'de>,
1228 {
1229 Ok(DeserializeWith(serde_with::As::<
1230 serde_with::OneOrMany<serde_with::Same>,
1231 >::deserialize(deserializer)?))
1232 }
1233 }
1234 match map.next_value::<DeserializeWith>() {
1235 Ok(deserialize_with) => deserialize_with.0,
1236 Err(err) => {
1237 return Err(err);
1238 }
1239 }
1240 });
1241 }
1242 Field::Description => {
1243 if r#description_property.is_some() {
1244 return Err(<A::Error as de::Error>::duplicate_field(
1245 "description",
1246 ));
1247 }
1248 r#description_property = Some({
1249 struct DeserializeWith(Vec<DescriptionProperty>);
1250 impl<'de> Deserialize<'de> for DeserializeWith {
1251 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1252 where
1253 D: Deserializer<'de>,
1254 {
1255 Ok(DeserializeWith(serde_with::As::<
1256 serde_with::OneOrMany<serde_with::Same>,
1257 >::deserialize(deserializer)?))
1258 }
1259 }
1260 match map.next_value::<DeserializeWith>() {
1261 Ok(deserialize_with) => deserialize_with.0,
1262 Err(err) => {
1263 return Err(err);
1264 }
1265 }
1266 });
1267 }
1268 Field::DisambiguatingDescription => {
1269 if r#disambiguating_description_property.is_some() {
1270 return Err(<A::Error as de::Error>::duplicate_field(
1271 "disambiguatingDescription",
1272 ));
1273 }
1274 r#disambiguating_description_property = Some({
1275 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1276 impl<'de> Deserialize<'de> for DeserializeWith {
1277 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1278 where
1279 D: Deserializer<'de>,
1280 {
1281 Ok(DeserializeWith(serde_with::As::<
1282 serde_with::OneOrMany<serde_with::Same>,
1283 >::deserialize(deserializer)?))
1284 }
1285 }
1286 match map.next_value::<DeserializeWith>() {
1287 Ok(deserialize_with) => deserialize_with.0,
1288 Err(err) => {
1289 return Err(err);
1290 }
1291 }
1292 });
1293 }
1294 Field::Identifier => {
1295 if r#identifier_property.is_some() {
1296 return Err(<A::Error as de::Error>::duplicate_field(
1297 "identifier",
1298 ));
1299 }
1300 r#identifier_property = Some({
1301 struct DeserializeWith(Vec<IdentifierProperty>);
1302 impl<'de> Deserialize<'de> for DeserializeWith {
1303 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1304 where
1305 D: Deserializer<'de>,
1306 {
1307 Ok(DeserializeWith(serde_with::As::<
1308 serde_with::OneOrMany<serde_with::Same>,
1309 >::deserialize(deserializer)?))
1310 }
1311 }
1312 match map.next_value::<DeserializeWith>() {
1313 Ok(deserialize_with) => deserialize_with.0,
1314 Err(err) => {
1315 return Err(err);
1316 }
1317 }
1318 });
1319 }
1320 Field::Image => {
1321 if r#image_property.is_some() {
1322 return Err(<A::Error as de::Error>::duplicate_field("image"));
1323 }
1324 r#image_property = Some({
1325 struct DeserializeWith(Vec<ImageProperty>);
1326 impl<'de> Deserialize<'de> for DeserializeWith {
1327 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1328 where
1329 D: Deserializer<'de>,
1330 {
1331 Ok(DeserializeWith(serde_with::As::<
1332 serde_with::OneOrMany<serde_with::Same>,
1333 >::deserialize(deserializer)?))
1334 }
1335 }
1336 match map.next_value::<DeserializeWith>() {
1337 Ok(deserialize_with) => deserialize_with.0,
1338 Err(err) => {
1339 return Err(err);
1340 }
1341 }
1342 });
1343 }
1344 Field::MainEntityOfPage => {
1345 if r#main_entity_of_page_property.is_some() {
1346 return Err(<A::Error as de::Error>::duplicate_field(
1347 "mainEntityOfPage",
1348 ));
1349 }
1350 r#main_entity_of_page_property = Some({
1351 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1352 impl<'de> Deserialize<'de> for DeserializeWith {
1353 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1354 where
1355 D: Deserializer<'de>,
1356 {
1357 Ok(DeserializeWith(serde_with::As::<
1358 serde_with::OneOrMany<serde_with::Same>,
1359 >::deserialize(deserializer)?))
1360 }
1361 }
1362 match map.next_value::<DeserializeWith>() {
1363 Ok(deserialize_with) => deserialize_with.0,
1364 Err(err) => {
1365 return Err(err);
1366 }
1367 }
1368 });
1369 }
1370 Field::Name => {
1371 if r#name_property.is_some() {
1372 return Err(<A::Error as de::Error>::duplicate_field("name"));
1373 }
1374 r#name_property = Some({
1375 struct DeserializeWith(Vec<NameProperty>);
1376 impl<'de> Deserialize<'de> for DeserializeWith {
1377 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1378 where
1379 D: Deserializer<'de>,
1380 {
1381 Ok(DeserializeWith(serde_with::As::<
1382 serde_with::OneOrMany<serde_with::Same>,
1383 >::deserialize(deserializer)?))
1384 }
1385 }
1386 match map.next_value::<DeserializeWith>() {
1387 Ok(deserialize_with) => deserialize_with.0,
1388 Err(err) => {
1389 return Err(err);
1390 }
1391 }
1392 });
1393 }
1394 Field::PotentialAction => {
1395 if r#potential_action_property.is_some() {
1396 return Err(<A::Error as de::Error>::duplicate_field(
1397 "potentialAction",
1398 ));
1399 }
1400 r#potential_action_property = Some({
1401 struct DeserializeWith(Vec<PotentialActionProperty>);
1402 impl<'de> Deserialize<'de> for DeserializeWith {
1403 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1404 where
1405 D: Deserializer<'de>,
1406 {
1407 Ok(DeserializeWith(serde_with::As::<
1408 serde_with::OneOrMany<serde_with::Same>,
1409 >::deserialize(deserializer)?))
1410 }
1411 }
1412 match map.next_value::<DeserializeWith>() {
1413 Ok(deserialize_with) => deserialize_with.0,
1414 Err(err) => {
1415 return Err(err);
1416 }
1417 }
1418 });
1419 }
1420 Field::SameAs => {
1421 if r#same_as_property.is_some() {
1422 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1423 }
1424 r#same_as_property = Some({
1425 struct DeserializeWith(Vec<SameAsProperty>);
1426 impl<'de> Deserialize<'de> for DeserializeWith {
1427 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1428 where
1429 D: Deserializer<'de>,
1430 {
1431 Ok(DeserializeWith(serde_with::As::<
1432 serde_with::OneOrMany<serde_with::Same>,
1433 >::deserialize(deserializer)?))
1434 }
1435 }
1436 match map.next_value::<DeserializeWith>() {
1437 Ok(deserialize_with) => deserialize_with.0,
1438 Err(err) => {
1439 return Err(err);
1440 }
1441 }
1442 });
1443 }
1444 Field::SubjectOf => {
1445 if r#subject_of_property.is_some() {
1446 return Err(<A::Error as de::Error>::duplicate_field(
1447 "subjectOf",
1448 ));
1449 }
1450 r#subject_of_property = Some({
1451 struct DeserializeWith(Vec<SubjectOfProperty>);
1452 impl<'de> Deserialize<'de> for DeserializeWith {
1453 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1454 where
1455 D: Deserializer<'de>,
1456 {
1457 Ok(DeserializeWith(serde_with::As::<
1458 serde_with::OneOrMany<serde_with::Same>,
1459 >::deserialize(deserializer)?))
1460 }
1461 }
1462 match map.next_value::<DeserializeWith>() {
1463 Ok(deserialize_with) => deserialize_with.0,
1464 Err(err) => {
1465 return Err(err);
1466 }
1467 }
1468 });
1469 }
1470 Field::Url => {
1471 if r#url_property.is_some() {
1472 return Err(<A::Error as de::Error>::duplicate_field("url"));
1473 }
1474 r#url_property = Some({
1475 struct DeserializeWith(Vec<UrlProperty>);
1476 impl<'de> Deserialize<'de> for DeserializeWith {
1477 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1478 where
1479 D: Deserializer<'de>,
1480 {
1481 Ok(DeserializeWith(serde_with::As::<
1482 serde_with::OneOrMany<serde_with::Same>,
1483 >::deserialize(deserializer)?))
1484 }
1485 }
1486 match map.next_value::<DeserializeWith>() {
1487 Ok(deserialize_with) => deserialize_with.0,
1488 Err(err) => {
1489 return Err(err);
1490 }
1491 }
1492 });
1493 }
1494 Field::Ignore => {
1495 let _ = map.next_value::<de::IgnoredAny>()?;
1496 }
1497 }
1498 }
1499 Ok(OfferShippingDetails {
1500 r#delivery_time: r#delivery_time_property.unwrap_or_default(),
1501 r#depth: r#depth_property.unwrap_or_default(),
1502 r#does_not_ship: r#does_not_ship_property.unwrap_or_default(),
1503 r#height: r#height_property.unwrap_or_default(),
1504 r#shipping_destination: r#shipping_destination_property.unwrap_or_default(),
1505 r#shipping_label: r#shipping_label_property.unwrap_or_default(),
1506 r#shipping_origin: r#shipping_origin_property.unwrap_or_default(),
1507 r#shipping_rate: r#shipping_rate_property.unwrap_or_default(),
1508 r#shipping_settings_link: r#shipping_settings_link_property
1509 .unwrap_or_default(),
1510 r#transit_time_label: r#transit_time_label_property.unwrap_or_default(),
1511 r#weight: r#weight_property.unwrap_or_default(),
1512 r#width: r#width_property.unwrap_or_default(),
1513 r#additional_type: r#additional_type_property.unwrap_or_default(),
1514 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1515 r#description: r#description_property.unwrap_or_default(),
1516 r#disambiguating_description: r#disambiguating_description_property
1517 .unwrap_or_default(),
1518 r#identifier: r#identifier_property.unwrap_or_default(),
1519 r#image: r#image_property.unwrap_or_default(),
1520 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1521 r#name: r#name_property.unwrap_or_default(),
1522 r#potential_action: r#potential_action_property.unwrap_or_default(),
1523 r#same_as: r#same_as_property.unwrap_or_default(),
1524 r#subject_of: r#subject_of_property.unwrap_or_default(),
1525 r#url: r#url_property.unwrap_or_default(),
1526 })
1527 }
1528 }
1529 const FIELDS: &[&str] = &[
1530 "deliveryTime",
1531 "depth",
1532 "doesNotShip",
1533 "height",
1534 "shippingDestination",
1535 "shippingLabel",
1536 "shippingOrigin",
1537 "shippingRate",
1538 "shippingSettingsLink",
1539 "transitTimeLabel",
1540 "weight",
1541 "width",
1542 "additionalType",
1543 "alternateName",
1544 "description",
1545 "disambiguatingDescription",
1546 "identifier",
1547 "image",
1548 "mainEntityOfPage",
1549 "name",
1550 "potentialAction",
1551 "sameAs",
1552 "subjectOf",
1553 "url",
1554 ];
1555 deserializer.deserialize_struct("OfferShippingDetails", FIELDS, ClassVisitor)
1556 }
1557 }
1558}