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