schema_org_types/schemas/classes/
offer_shipping_details.rs

1use super::*;
2/// <https://schema.org/OfferShippingDetails>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct OfferShippingDetails {
6	/// <https://schema.org/deliveryTime>
7	pub r#delivery_time: Vec<DeliveryTimeProperty>,
8	/// <https://schema.org/depth>
9	pub r#depth: Vec<DepthProperty>,
10	/// <https://schema.org/doesNotShip>
11	pub r#does_not_ship: Vec<DoesNotShipProperty>,
12	/// <https://schema.org/height>
13	pub r#height: Vec<HeightProperty>,
14	/// <https://schema.org/shippingDestination>
15	pub r#shipping_destination: Vec<ShippingDestinationProperty>,
16	/// <https://schema.org/shippingLabel>
17	pub r#shipping_label: Vec<ShippingLabelProperty>,
18	/// <https://schema.org/shippingOrigin>
19	pub r#shipping_origin: Vec<ShippingOriginProperty>,
20	/// <https://schema.org/shippingRate>
21	pub r#shipping_rate: Vec<ShippingRateProperty>,
22	/// <https://schema.org/shippingSettingsLink>
23	pub r#shipping_settings_link: Vec<ShippingSettingsLinkProperty>,
24	/// <https://schema.org/transitTimeLabel>
25	pub r#transit_time_label: Vec<TransitTimeLabelProperty>,
26	/// <https://schema.org/weight>
27	pub r#weight: Vec<WeightProperty>,
28	/// <https://schema.org/width>
29	pub r#width: Vec<WidthProperty>,
30	/// <https://schema.org/additionalType>
31	pub r#additional_type: Vec<AdditionalTypeProperty>,
32	/// <https://schema.org/alternateName>
33	pub r#alternate_name: Vec<AlternateNameProperty>,
34	/// <https://schema.org/description>
35	pub r#description: Vec<DescriptionProperty>,
36	/// <https://schema.org/disambiguatingDescription>
37	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
38	/// <https://schema.org/identifier>
39	pub r#identifier: Vec<IdentifierProperty>,
40	/// <https://schema.org/image>
41	pub r#image: Vec<ImageProperty>,
42	/// <https://schema.org/mainEntityOfPage>
43	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
44	/// <https://schema.org/name>
45	pub r#name: Vec<NameProperty>,
46	/// <https://schema.org/potentialAction>
47	pub r#potential_action: Vec<PotentialActionProperty>,
48	/// <https://schema.org/sameAs>
49	pub r#same_as: Vec<SameAsProperty>,
50	/// <https://schema.org/subjectOf>
51	pub r#subject_of: Vec<SubjectOfProperty>,
52	/// <https://schema.org/url>
53	pub r#url: Vec<UrlProperty>,
54}
55/// This trait is for properties from <https://schema.org/OfferShippingDetails>.
56pub trait OfferShippingDetailsTrait {
57	/// Get <https://schema.org/deliveryTime> from [`Self`] as borrowed slice.
58	fn get_delivery_time(&self) -> &[DeliveryTimeProperty];
59	/// Take <https://schema.org/deliveryTime> from [`Self`] as owned vector.
60	fn take_delivery_time(&mut self) -> Vec<DeliveryTimeProperty>;
61	/// Get <https://schema.org/depth> from [`Self`] as borrowed slice.
62	fn get_depth(&self) -> &[DepthProperty];
63	/// Take <https://schema.org/depth> from [`Self`] as owned vector.
64	fn take_depth(&mut self) -> Vec<DepthProperty>;
65	/// Get <https://schema.org/doesNotShip> from [`Self`] as borrowed slice.
66	fn get_does_not_ship(&self) -> &[DoesNotShipProperty];
67	/// Take <https://schema.org/doesNotShip> from [`Self`] as owned vector.
68	fn take_does_not_ship(&mut self) -> Vec<DoesNotShipProperty>;
69	/// Get <https://schema.org/height> from [`Self`] as borrowed slice.
70	fn get_height(&self) -> &[HeightProperty];
71	/// Take <https://schema.org/height> from [`Self`] as owned vector.
72	fn take_height(&mut self) -> Vec<HeightProperty>;
73	/// Get <https://schema.org/shippingDestination> from [`Self`] as borrowed slice.
74	fn get_shipping_destination(&self) -> &[ShippingDestinationProperty];
75	/// Take <https://schema.org/shippingDestination> from [`Self`] as owned vector.
76	fn take_shipping_destination(&mut self) -> Vec<ShippingDestinationProperty>;
77	/// Get <https://schema.org/shippingLabel> from [`Self`] as borrowed slice.
78	fn get_shipping_label(&self) -> &[ShippingLabelProperty];
79	/// Take <https://schema.org/shippingLabel> from [`Self`] as owned vector.
80	fn take_shipping_label(&mut self) -> Vec<ShippingLabelProperty>;
81	/// Get <https://schema.org/shippingOrigin> from [`Self`] as borrowed slice.
82	fn get_shipping_origin(&self) -> &[ShippingOriginProperty];
83	/// Take <https://schema.org/shippingOrigin> from [`Self`] as owned vector.
84	fn take_shipping_origin(&mut self) -> Vec<ShippingOriginProperty>;
85	/// Get <https://schema.org/shippingRate> from [`Self`] as borrowed slice.
86	fn get_shipping_rate(&self) -> &[ShippingRateProperty];
87	/// Take <https://schema.org/shippingRate> from [`Self`] as owned vector.
88	fn take_shipping_rate(&mut self) -> Vec<ShippingRateProperty>;
89	/// Get <https://schema.org/shippingSettingsLink> from [`Self`] as borrowed slice.
90	fn get_shipping_settings_link(&self) -> &[ShippingSettingsLinkProperty];
91	/// Take <https://schema.org/shippingSettingsLink> from [`Self`] as owned vector.
92	fn take_shipping_settings_link(&mut self) -> Vec<ShippingSettingsLinkProperty>;
93	/// Get <https://schema.org/transitTimeLabel> from [`Self`] as borrowed slice.
94	fn get_transit_time_label(&self) -> &[TransitTimeLabelProperty];
95	/// Take <https://schema.org/transitTimeLabel> from [`Self`] as owned vector.
96	fn take_transit_time_label(&mut self) -> Vec<TransitTimeLabelProperty>;
97	/// Get <https://schema.org/weight> from [`Self`] as borrowed slice.
98	fn get_weight(&self) -> &[WeightProperty];
99	/// Take <https://schema.org/weight> from [`Self`] as owned vector.
100	fn take_weight(&mut self) -> Vec<WeightProperty>;
101	/// Get <https://schema.org/width> from [`Self`] as borrowed slice.
102	fn get_width(&self) -> &[WidthProperty];
103	/// Take <https://schema.org/width> from [`Self`] as owned vector.
104	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}