1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct ReservationPackage {
6 pub r#sub_reservation: Vec<SubReservationProperty>,
8 #[deprecated = "This schema is superseded by <https://schema.org/broker>."]
10 pub r#booking_agent: Vec<BookingAgentProperty>,
11 pub r#booking_time: Vec<BookingTimeProperty>,
13 pub r#broker: Vec<BrokerProperty>,
15 pub r#modified_time: Vec<ModifiedTimeProperty>,
17 pub r#price_currency: Vec<PriceCurrencyProperty>,
19 pub r#program_membership_used: Vec<ProgramMembershipUsedProperty>,
21 pub r#provider: Vec<ProviderProperty>,
23 pub r#reservation_for: Vec<ReservationForProperty>,
25 pub r#reservation_id: Vec<ReservationIdProperty>,
27 pub r#reservation_status: Vec<ReservationStatusProperty>,
29 pub r#reserved_ticket: Vec<ReservedTicketProperty>,
31 pub r#total_price: Vec<TotalPriceProperty>,
33 pub r#under_name: Vec<UnderNameProperty>,
35 pub r#additional_type: Vec<AdditionalTypeProperty>,
37 pub r#alternate_name: Vec<AlternateNameProperty>,
39 pub r#description: Vec<DescriptionProperty>,
41 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
43 pub r#identifier: Vec<IdentifierProperty>,
45 pub r#image: Vec<ImageProperty>,
47 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
49 pub r#name: Vec<NameProperty>,
51 pub r#potential_action: Vec<PotentialActionProperty>,
53 pub r#same_as: Vec<SameAsProperty>,
55 pub r#subject_of: Vec<SubjectOfProperty>,
57 pub r#url: Vec<UrlProperty>,
59}
60pub trait ReservationPackageTrait {
62 fn get_sub_reservation(&self) -> &[SubReservationProperty];
64 fn take_sub_reservation(&mut self) -> Vec<SubReservationProperty>;
66}
67impl ReservationPackageTrait for ReservationPackage {
68 fn get_sub_reservation(&self) -> &[SubReservationProperty] {
69 self.r#sub_reservation.as_slice()
70 }
71 fn take_sub_reservation(&mut self) -> Vec<SubReservationProperty> {
72 std::mem::take(&mut self.r#sub_reservation)
73 }
74}
75impl ReservationTrait for ReservationPackage {
76 fn get_booking_agent(&self) -> &[BookingAgentProperty] {
77 self.r#booking_agent.as_slice()
78 }
79 fn take_booking_agent(&mut self) -> Vec<BookingAgentProperty> {
80 std::mem::take(&mut self.r#booking_agent)
81 }
82 fn get_booking_time(&self) -> &[BookingTimeProperty] {
83 self.r#booking_time.as_slice()
84 }
85 fn take_booking_time(&mut self) -> Vec<BookingTimeProperty> {
86 std::mem::take(&mut self.r#booking_time)
87 }
88 fn get_broker(&self) -> &[BrokerProperty] {
89 self.r#broker.as_slice()
90 }
91 fn take_broker(&mut self) -> Vec<BrokerProperty> {
92 std::mem::take(&mut self.r#broker)
93 }
94 fn get_modified_time(&self) -> &[ModifiedTimeProperty] {
95 self.r#modified_time.as_slice()
96 }
97 fn take_modified_time(&mut self) -> Vec<ModifiedTimeProperty> {
98 std::mem::take(&mut self.r#modified_time)
99 }
100 fn get_price_currency(&self) -> &[PriceCurrencyProperty] {
101 self.r#price_currency.as_slice()
102 }
103 fn take_price_currency(&mut self) -> Vec<PriceCurrencyProperty> {
104 std::mem::take(&mut self.r#price_currency)
105 }
106 fn get_program_membership_used(&self) -> &[ProgramMembershipUsedProperty] {
107 self.r#program_membership_used.as_slice()
108 }
109 fn take_program_membership_used(&mut self) -> Vec<ProgramMembershipUsedProperty> {
110 std::mem::take(&mut self.r#program_membership_used)
111 }
112 fn get_provider(&self) -> &[ProviderProperty] {
113 self.r#provider.as_slice()
114 }
115 fn take_provider(&mut self) -> Vec<ProviderProperty> {
116 std::mem::take(&mut self.r#provider)
117 }
118 fn get_reservation_for(&self) -> &[ReservationForProperty] {
119 self.r#reservation_for.as_slice()
120 }
121 fn take_reservation_for(&mut self) -> Vec<ReservationForProperty> {
122 std::mem::take(&mut self.r#reservation_for)
123 }
124 fn get_reservation_id(&self) -> &[ReservationIdProperty] {
125 self.r#reservation_id.as_slice()
126 }
127 fn take_reservation_id(&mut self) -> Vec<ReservationIdProperty> {
128 std::mem::take(&mut self.r#reservation_id)
129 }
130 fn get_reservation_status(&self) -> &[ReservationStatusProperty] {
131 self.r#reservation_status.as_slice()
132 }
133 fn take_reservation_status(&mut self) -> Vec<ReservationStatusProperty> {
134 std::mem::take(&mut self.r#reservation_status)
135 }
136 fn get_reserved_ticket(&self) -> &[ReservedTicketProperty] {
137 self.r#reserved_ticket.as_slice()
138 }
139 fn take_reserved_ticket(&mut self) -> Vec<ReservedTicketProperty> {
140 std::mem::take(&mut self.r#reserved_ticket)
141 }
142 fn get_total_price(&self) -> &[TotalPriceProperty] {
143 self.r#total_price.as_slice()
144 }
145 fn take_total_price(&mut self) -> Vec<TotalPriceProperty> {
146 std::mem::take(&mut self.r#total_price)
147 }
148 fn get_under_name(&self) -> &[UnderNameProperty] {
149 self.r#under_name.as_slice()
150 }
151 fn take_under_name(&mut self) -> Vec<UnderNameProperty> {
152 std::mem::take(&mut self.r#under_name)
153 }
154}
155impl ThingTrait for ReservationPackage {
156 fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
157 self.r#additional_type.as_slice()
158 }
159 fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
160 std::mem::take(&mut self.r#additional_type)
161 }
162 fn get_alternate_name(&self) -> &[AlternateNameProperty] {
163 self.r#alternate_name.as_slice()
164 }
165 fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
166 std::mem::take(&mut self.r#alternate_name)
167 }
168 fn get_description(&self) -> &[DescriptionProperty] {
169 self.r#description.as_slice()
170 }
171 fn take_description(&mut self) -> Vec<DescriptionProperty> {
172 std::mem::take(&mut self.r#description)
173 }
174 fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
175 self.r#disambiguating_description.as_slice()
176 }
177 fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
178 std::mem::take(&mut self.r#disambiguating_description)
179 }
180 fn get_identifier(&self) -> &[IdentifierProperty] {
181 self.r#identifier.as_slice()
182 }
183 fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
184 std::mem::take(&mut self.r#identifier)
185 }
186 fn get_image(&self) -> &[ImageProperty] {
187 self.r#image.as_slice()
188 }
189 fn take_image(&mut self) -> Vec<ImageProperty> {
190 std::mem::take(&mut self.r#image)
191 }
192 fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
193 self.r#main_entity_of_page.as_slice()
194 }
195 fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
196 std::mem::take(&mut self.r#main_entity_of_page)
197 }
198 fn get_name(&self) -> &[NameProperty] {
199 self.r#name.as_slice()
200 }
201 fn take_name(&mut self) -> Vec<NameProperty> {
202 std::mem::take(&mut self.r#name)
203 }
204 fn get_potential_action(&self) -> &[PotentialActionProperty] {
205 self.r#potential_action.as_slice()
206 }
207 fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
208 std::mem::take(&mut self.r#potential_action)
209 }
210 fn get_same_as(&self) -> &[SameAsProperty] {
211 self.r#same_as.as_slice()
212 }
213 fn take_same_as(&mut self) -> Vec<SameAsProperty> {
214 std::mem::take(&mut self.r#same_as)
215 }
216 fn get_subject_of(&self) -> &[SubjectOfProperty] {
217 self.r#subject_of.as_slice()
218 }
219 fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
220 std::mem::take(&mut self.r#subject_of)
221 }
222 fn get_url(&self) -> &[UrlProperty] {
223 self.r#url.as_slice()
224 }
225 fn take_url(&mut self) -> Vec<UrlProperty> {
226 std::mem::take(&mut self.r#url)
227 }
228}
229#[cfg(feature = "serde")]
230mod serde {
231 use std::{fmt, fmt::Formatter};
232
233 use ::serde::{
234 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
235 };
236
237 use super::*;
238 impl Serialize for ReservationPackage {
239 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
240 where
241 S: Serializer,
242 {
243 let len: usize = [
244 !Vec::is_empty(&self.r#sub_reservation) as usize,
245 !Vec::is_empty(&self.r#booking_agent) as usize,
246 !Vec::is_empty(&self.r#booking_time) as usize,
247 !Vec::is_empty(&self.r#broker) as usize,
248 !Vec::is_empty(&self.r#modified_time) as usize,
249 !Vec::is_empty(&self.r#price_currency) as usize,
250 !Vec::is_empty(&self.r#program_membership_used) as usize,
251 !Vec::is_empty(&self.r#provider) as usize,
252 !Vec::is_empty(&self.r#reservation_for) as usize,
253 !Vec::is_empty(&self.r#reservation_id) as usize,
254 !Vec::is_empty(&self.r#reservation_status) as usize,
255 !Vec::is_empty(&self.r#reserved_ticket) as usize,
256 !Vec::is_empty(&self.r#total_price) as usize,
257 !Vec::is_empty(&self.r#under_name) as usize,
258 !Vec::is_empty(&self.r#additional_type) as usize,
259 !Vec::is_empty(&self.r#alternate_name) as usize,
260 !Vec::is_empty(&self.r#description) as usize,
261 !Vec::is_empty(&self.r#disambiguating_description) as usize,
262 !Vec::is_empty(&self.r#identifier) as usize,
263 !Vec::is_empty(&self.r#image) as usize,
264 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
265 !Vec::is_empty(&self.r#name) as usize,
266 !Vec::is_empty(&self.r#potential_action) as usize,
267 !Vec::is_empty(&self.r#same_as) as usize,
268 !Vec::is_empty(&self.r#subject_of) as usize,
269 !Vec::is_empty(&self.r#url) as usize,
270 ]
271 .iter()
272 .sum();
273 let mut serialize_struct =
274 Serializer::serialize_struct(serializer, "ReservationPackage", len)?;
275 if !Vec::is_empty(&self.r#sub_reservation) {
276 serialize_struct.serialize_field("subReservation", {
277 struct SerializeWith<'a>(&'a Vec<SubReservationProperty>);
278 impl<'a> Serialize for SerializeWith<'a> {
279 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
280 where
281 S: Serializer,
282 {
283 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
284 self.0, serializer,
285 )
286 }
287 }
288 &SerializeWith(&self.r#sub_reservation)
289 })?;
290 } else {
291 serialize_struct.skip_field("subReservation")?;
292 }
293 if !Vec::is_empty(&self.r#booking_agent) {
294 serialize_struct.serialize_field("bookingAgent", {
295 struct SerializeWith<'a>(&'a Vec<BookingAgentProperty>);
296 impl<'a> Serialize for SerializeWith<'a> {
297 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
298 where
299 S: Serializer,
300 {
301 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
302 self.0, serializer,
303 )
304 }
305 }
306 &SerializeWith(&self.r#booking_agent)
307 })?;
308 } else {
309 serialize_struct.skip_field("bookingAgent")?;
310 }
311 if !Vec::is_empty(&self.r#booking_time) {
312 serialize_struct.serialize_field("bookingTime", {
313 struct SerializeWith<'a>(&'a Vec<BookingTimeProperty>);
314 impl<'a> Serialize for SerializeWith<'a> {
315 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
316 where
317 S: Serializer,
318 {
319 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
320 self.0, serializer,
321 )
322 }
323 }
324 &SerializeWith(&self.r#booking_time)
325 })?;
326 } else {
327 serialize_struct.skip_field("bookingTime")?;
328 }
329 if !Vec::is_empty(&self.r#broker) {
330 serialize_struct.serialize_field("broker", {
331 struct SerializeWith<'a>(&'a Vec<BrokerProperty>);
332 impl<'a> Serialize for SerializeWith<'a> {
333 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
334 where
335 S: Serializer,
336 {
337 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
338 self.0, serializer,
339 )
340 }
341 }
342 &SerializeWith(&self.r#broker)
343 })?;
344 } else {
345 serialize_struct.skip_field("broker")?;
346 }
347 if !Vec::is_empty(&self.r#modified_time) {
348 serialize_struct.serialize_field("modifiedTime", {
349 struct SerializeWith<'a>(&'a Vec<ModifiedTimeProperty>);
350 impl<'a> Serialize for SerializeWith<'a> {
351 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
352 where
353 S: Serializer,
354 {
355 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
356 self.0, serializer,
357 )
358 }
359 }
360 &SerializeWith(&self.r#modified_time)
361 })?;
362 } else {
363 serialize_struct.skip_field("modifiedTime")?;
364 }
365 if !Vec::is_empty(&self.r#price_currency) {
366 serialize_struct.serialize_field("priceCurrency", {
367 struct SerializeWith<'a>(&'a Vec<PriceCurrencyProperty>);
368 impl<'a> Serialize for SerializeWith<'a> {
369 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
370 where
371 S: Serializer,
372 {
373 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
374 self.0, serializer,
375 )
376 }
377 }
378 &SerializeWith(&self.r#price_currency)
379 })?;
380 } else {
381 serialize_struct.skip_field("priceCurrency")?;
382 }
383 if !Vec::is_empty(&self.r#program_membership_used) {
384 serialize_struct.serialize_field("programMembershipUsed", {
385 struct SerializeWith<'a>(&'a Vec<ProgramMembershipUsedProperty>);
386 impl<'a> Serialize for SerializeWith<'a> {
387 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
388 where
389 S: Serializer,
390 {
391 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
392 self.0, serializer,
393 )
394 }
395 }
396 &SerializeWith(&self.r#program_membership_used)
397 })?;
398 } else {
399 serialize_struct.skip_field("programMembershipUsed")?;
400 }
401 if !Vec::is_empty(&self.r#provider) {
402 serialize_struct.serialize_field("provider", {
403 struct SerializeWith<'a>(&'a Vec<ProviderProperty>);
404 impl<'a> Serialize for SerializeWith<'a> {
405 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
406 where
407 S: Serializer,
408 {
409 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
410 self.0, serializer,
411 )
412 }
413 }
414 &SerializeWith(&self.r#provider)
415 })?;
416 } else {
417 serialize_struct.skip_field("provider")?;
418 }
419 if !Vec::is_empty(&self.r#reservation_for) {
420 serialize_struct.serialize_field("reservationFor", {
421 struct SerializeWith<'a>(&'a Vec<ReservationForProperty>);
422 impl<'a> Serialize for SerializeWith<'a> {
423 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
424 where
425 S: Serializer,
426 {
427 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
428 self.0, serializer,
429 )
430 }
431 }
432 &SerializeWith(&self.r#reservation_for)
433 })?;
434 } else {
435 serialize_struct.skip_field("reservationFor")?;
436 }
437 if !Vec::is_empty(&self.r#reservation_id) {
438 serialize_struct.serialize_field("reservationId", {
439 struct SerializeWith<'a>(&'a Vec<ReservationIdProperty>);
440 impl<'a> Serialize for SerializeWith<'a> {
441 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
442 where
443 S: Serializer,
444 {
445 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
446 self.0, serializer,
447 )
448 }
449 }
450 &SerializeWith(&self.r#reservation_id)
451 })?;
452 } else {
453 serialize_struct.skip_field("reservationId")?;
454 }
455 if !Vec::is_empty(&self.r#reservation_status) {
456 serialize_struct.serialize_field("reservationStatus", {
457 struct SerializeWith<'a>(&'a Vec<ReservationStatusProperty>);
458 impl<'a> Serialize for SerializeWith<'a> {
459 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
460 where
461 S: Serializer,
462 {
463 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
464 self.0, serializer,
465 )
466 }
467 }
468 &SerializeWith(&self.r#reservation_status)
469 })?;
470 } else {
471 serialize_struct.skip_field("reservationStatus")?;
472 }
473 if !Vec::is_empty(&self.r#reserved_ticket) {
474 serialize_struct.serialize_field("reservedTicket", {
475 struct SerializeWith<'a>(&'a Vec<ReservedTicketProperty>);
476 impl<'a> Serialize for SerializeWith<'a> {
477 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
478 where
479 S: Serializer,
480 {
481 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
482 self.0, serializer,
483 )
484 }
485 }
486 &SerializeWith(&self.r#reserved_ticket)
487 })?;
488 } else {
489 serialize_struct.skip_field("reservedTicket")?;
490 }
491 if !Vec::is_empty(&self.r#total_price) {
492 serialize_struct.serialize_field("totalPrice", {
493 struct SerializeWith<'a>(&'a Vec<TotalPriceProperty>);
494 impl<'a> Serialize for SerializeWith<'a> {
495 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
496 where
497 S: Serializer,
498 {
499 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
500 self.0, serializer,
501 )
502 }
503 }
504 &SerializeWith(&self.r#total_price)
505 })?;
506 } else {
507 serialize_struct.skip_field("totalPrice")?;
508 }
509 if !Vec::is_empty(&self.r#under_name) {
510 serialize_struct.serialize_field("underName", {
511 struct SerializeWith<'a>(&'a Vec<UnderNameProperty>);
512 impl<'a> Serialize for SerializeWith<'a> {
513 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
514 where
515 S: Serializer,
516 {
517 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
518 self.0, serializer,
519 )
520 }
521 }
522 &SerializeWith(&self.r#under_name)
523 })?;
524 } else {
525 serialize_struct.skip_field("underName")?;
526 }
527 if !Vec::is_empty(&self.r#additional_type) {
528 serialize_struct.serialize_field("additionalType", {
529 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
530 impl<'a> Serialize for SerializeWith<'a> {
531 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
532 where
533 S: Serializer,
534 {
535 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
536 self.0, serializer,
537 )
538 }
539 }
540 &SerializeWith(&self.r#additional_type)
541 })?;
542 } else {
543 serialize_struct.skip_field("additionalType")?;
544 }
545 if !Vec::is_empty(&self.r#alternate_name) {
546 serialize_struct.serialize_field("alternateName", {
547 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
548 impl<'a> Serialize for SerializeWith<'a> {
549 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
550 where
551 S: Serializer,
552 {
553 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
554 self.0, serializer,
555 )
556 }
557 }
558 &SerializeWith(&self.r#alternate_name)
559 })?;
560 } else {
561 serialize_struct.skip_field("alternateName")?;
562 }
563 if !Vec::is_empty(&self.r#description) {
564 serialize_struct.serialize_field("description", {
565 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
566 impl<'a> Serialize for SerializeWith<'a> {
567 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
568 where
569 S: Serializer,
570 {
571 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
572 self.0, serializer,
573 )
574 }
575 }
576 &SerializeWith(&self.r#description)
577 })?;
578 } else {
579 serialize_struct.skip_field("description")?;
580 }
581 if !Vec::is_empty(&self.r#disambiguating_description) {
582 serialize_struct.serialize_field("disambiguatingDescription", {
583 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
584 impl<'a> Serialize for SerializeWith<'a> {
585 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
586 where
587 S: Serializer,
588 {
589 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
590 self.0, serializer,
591 )
592 }
593 }
594 &SerializeWith(&self.r#disambiguating_description)
595 })?;
596 } else {
597 serialize_struct.skip_field("disambiguatingDescription")?;
598 }
599 if !Vec::is_empty(&self.r#identifier) {
600 serialize_struct.serialize_field("identifier", {
601 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
602 impl<'a> Serialize for SerializeWith<'a> {
603 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
604 where
605 S: Serializer,
606 {
607 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
608 self.0, serializer,
609 )
610 }
611 }
612 &SerializeWith(&self.r#identifier)
613 })?;
614 } else {
615 serialize_struct.skip_field("identifier")?;
616 }
617 if !Vec::is_empty(&self.r#image) {
618 serialize_struct.serialize_field("image", {
619 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
620 impl<'a> Serialize for SerializeWith<'a> {
621 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
622 where
623 S: Serializer,
624 {
625 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
626 self.0, serializer,
627 )
628 }
629 }
630 &SerializeWith(&self.r#image)
631 })?;
632 } else {
633 serialize_struct.skip_field("image")?;
634 }
635 if !Vec::is_empty(&self.r#main_entity_of_page) {
636 serialize_struct.serialize_field("mainEntityOfPage", {
637 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
638 impl<'a> Serialize for SerializeWith<'a> {
639 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
640 where
641 S: Serializer,
642 {
643 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
644 self.0, serializer,
645 )
646 }
647 }
648 &SerializeWith(&self.r#main_entity_of_page)
649 })?;
650 } else {
651 serialize_struct.skip_field("mainEntityOfPage")?;
652 }
653 if !Vec::is_empty(&self.r#name) {
654 serialize_struct.serialize_field("name", {
655 struct SerializeWith<'a>(&'a Vec<NameProperty>);
656 impl<'a> Serialize for SerializeWith<'a> {
657 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
658 where
659 S: Serializer,
660 {
661 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
662 self.0, serializer,
663 )
664 }
665 }
666 &SerializeWith(&self.r#name)
667 })?;
668 } else {
669 serialize_struct.skip_field("name")?;
670 }
671 if !Vec::is_empty(&self.r#potential_action) {
672 serialize_struct.serialize_field("potentialAction", {
673 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
674 impl<'a> Serialize for SerializeWith<'a> {
675 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
676 where
677 S: Serializer,
678 {
679 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
680 self.0, serializer,
681 )
682 }
683 }
684 &SerializeWith(&self.r#potential_action)
685 })?;
686 } else {
687 serialize_struct.skip_field("potentialAction")?;
688 }
689 if !Vec::is_empty(&self.r#same_as) {
690 serialize_struct.serialize_field("sameAs", {
691 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
692 impl<'a> Serialize for SerializeWith<'a> {
693 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
694 where
695 S: Serializer,
696 {
697 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
698 self.0, serializer,
699 )
700 }
701 }
702 &SerializeWith(&self.r#same_as)
703 })?;
704 } else {
705 serialize_struct.skip_field("sameAs")?;
706 }
707 if !Vec::is_empty(&self.r#subject_of) {
708 serialize_struct.serialize_field("subjectOf", {
709 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
710 impl<'a> Serialize for SerializeWith<'a> {
711 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
712 where
713 S: Serializer,
714 {
715 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
716 self.0, serializer,
717 )
718 }
719 }
720 &SerializeWith(&self.r#subject_of)
721 })?;
722 } else {
723 serialize_struct.skip_field("subjectOf")?;
724 }
725 if !Vec::is_empty(&self.r#url) {
726 serialize_struct.serialize_field("url", {
727 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
728 impl<'a> Serialize for SerializeWith<'a> {
729 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
730 where
731 S: Serializer,
732 {
733 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
734 self.0, serializer,
735 )
736 }
737 }
738 &SerializeWith(&self.r#url)
739 })?;
740 } else {
741 serialize_struct.skip_field("url")?;
742 }
743 serialize_struct.end()
744 }
745 }
746 impl<'de> Deserialize<'de> for ReservationPackage {
747 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
748 where
749 D: Deserializer<'de>,
750 {
751 enum Field {
752 SubReservation,
753 BookingAgent,
754 BookingTime,
755 Broker,
756 ModifiedTime,
757 PriceCurrency,
758 ProgramMembershipUsed,
759 Provider,
760 ReservationFor,
761 ReservationId,
762 ReservationStatus,
763 ReservedTicket,
764 TotalPrice,
765 UnderName,
766 AdditionalType,
767 AlternateName,
768 Description,
769 DisambiguatingDescription,
770 Identifier,
771 Image,
772 MainEntityOfPage,
773 Name,
774 PotentialAction,
775 SameAs,
776 SubjectOf,
777 Url,
778 Ignore,
779 }
780 struct FieldVisitor;
781 impl<'de> Visitor<'de> for FieldVisitor {
782 type Value = Field;
783 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
784 formatter.write_str("field identifier")
785 }
786 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
787 where
788 E: de::Error,
789 {
790 match value {
791 "subReservation" => Ok(Field::SubReservation),
792 "bookingAgent" => Ok(Field::BookingAgent),
793 "bookingTime" => Ok(Field::BookingTime),
794 "broker" => Ok(Field::Broker),
795 "modifiedTime" => Ok(Field::ModifiedTime),
796 "priceCurrency" => Ok(Field::PriceCurrency),
797 "programMembershipUsed" => Ok(Field::ProgramMembershipUsed),
798 "provider" => Ok(Field::Provider),
799 "reservationFor" => Ok(Field::ReservationFor),
800 "reservationId" => Ok(Field::ReservationId),
801 "reservationStatus" => Ok(Field::ReservationStatus),
802 "reservedTicket" => Ok(Field::ReservedTicket),
803 "totalPrice" => Ok(Field::TotalPrice),
804 "underName" => Ok(Field::UnderName),
805 "additionalType" => Ok(Field::AdditionalType),
806 "alternateName" => Ok(Field::AlternateName),
807 "description" => Ok(Field::Description),
808 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
809 "identifier" => Ok(Field::Identifier),
810 "image" => Ok(Field::Image),
811 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
812 "name" => Ok(Field::Name),
813 "potentialAction" => Ok(Field::PotentialAction),
814 "sameAs" => Ok(Field::SameAs),
815 "subjectOf" => Ok(Field::SubjectOf),
816 "url" => Ok(Field::Url),
817 "id" | "type" => Ok(Field::Ignore),
818 _ => Err(de::Error::unknown_field(value, FIELDS)),
819 }
820 }
821 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
822 where
823 E: de::Error,
824 {
825 match value {
826 b"subReservation" => Ok(Field::SubReservation),
827 b"bookingAgent" => Ok(Field::BookingAgent),
828 b"bookingTime" => Ok(Field::BookingTime),
829 b"broker" => Ok(Field::Broker),
830 b"modifiedTime" => Ok(Field::ModifiedTime),
831 b"priceCurrency" => Ok(Field::PriceCurrency),
832 b"programMembershipUsed" => Ok(Field::ProgramMembershipUsed),
833 b"provider" => Ok(Field::Provider),
834 b"reservationFor" => Ok(Field::ReservationFor),
835 b"reservationId" => Ok(Field::ReservationId),
836 b"reservationStatus" => Ok(Field::ReservationStatus),
837 b"reservedTicket" => Ok(Field::ReservedTicket),
838 b"totalPrice" => Ok(Field::TotalPrice),
839 b"underName" => Ok(Field::UnderName),
840 b"additionalType" => Ok(Field::AdditionalType),
841 b"alternateName" => Ok(Field::AlternateName),
842 b"description" => Ok(Field::Description),
843 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
844 b"identifier" => Ok(Field::Identifier),
845 b"image" => Ok(Field::Image),
846 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
847 b"name" => Ok(Field::Name),
848 b"potentialAction" => Ok(Field::PotentialAction),
849 b"sameAs" => Ok(Field::SameAs),
850 b"subjectOf" => Ok(Field::SubjectOf),
851 b"url" => Ok(Field::Url),
852 b"id" | b"type" => Ok(Field::Ignore),
853 _ => {
854 let value = &String::from_utf8_lossy(value);
855 Err(de::Error::unknown_field(value, FIELDS))
856 }
857 }
858 }
859 }
860 impl<'de> Deserialize<'de> for Field {
861 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
862 where
863 D: Deserializer<'de>,
864 {
865 deserializer.deserialize_identifier(FieldVisitor)
866 }
867 }
868 struct ClassVisitor;
869 impl<'de> Visitor<'de> for ClassVisitor {
870 type Value = ReservationPackage;
871 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
872 formatter.write_str("schema.org schema ReservationPackage")
873 }
874 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
875 where
876 A: de::MapAccess<'de>,
877 {
878 let mut r#sub_reservation_property = None;
879 let mut r#booking_agent_property = None;
880 let mut r#booking_time_property = None;
881 let mut r#broker_property = None;
882 let mut r#modified_time_property = None;
883 let mut r#price_currency_property = None;
884 let mut r#program_membership_used_property = None;
885 let mut r#provider_property = None;
886 let mut r#reservation_for_property = None;
887 let mut r#reservation_id_property = None;
888 let mut r#reservation_status_property = None;
889 let mut r#reserved_ticket_property = None;
890 let mut r#total_price_property = None;
891 let mut r#under_name_property = None;
892 let mut r#additional_type_property = None;
893 let mut r#alternate_name_property = None;
894 let mut r#description_property = None;
895 let mut r#disambiguating_description_property = None;
896 let mut r#identifier_property = None;
897 let mut r#image_property = None;
898 let mut r#main_entity_of_page_property = None;
899 let mut r#name_property = None;
900 let mut r#potential_action_property = None;
901 let mut r#same_as_property = None;
902 let mut r#subject_of_property = None;
903 let mut r#url_property = None;
904 while let Some(key) = map.next_key::<Field>()? {
905 match key {
906 Field::SubReservation => {
907 if r#sub_reservation_property.is_some() {
908 return Err(<A::Error as de::Error>::duplicate_field(
909 "subReservation",
910 ));
911 }
912 r#sub_reservation_property = Some({
913 struct DeserializeWith(Vec<SubReservationProperty>);
914 impl<'de> Deserialize<'de> for DeserializeWith {
915 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
916 where
917 D: Deserializer<'de>,
918 {
919 Ok(DeserializeWith(serde_with::As::<
920 serde_with::OneOrMany<serde_with::Same>,
921 >::deserialize(deserializer)?))
922 }
923 }
924 match map.next_value::<DeserializeWith>() {
925 Ok(deserialize_with) => deserialize_with.0,
926 Err(err) => {
927 return Err(err);
928 }
929 }
930 });
931 }
932 Field::BookingAgent => {
933 if r#booking_agent_property.is_some() {
934 return Err(<A::Error as de::Error>::duplicate_field(
935 "bookingAgent",
936 ));
937 }
938 r#booking_agent_property = Some({
939 struct DeserializeWith(Vec<BookingAgentProperty>);
940 impl<'de> Deserialize<'de> for DeserializeWith {
941 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
942 where
943 D: Deserializer<'de>,
944 {
945 Ok(DeserializeWith(serde_with::As::<
946 serde_with::OneOrMany<serde_with::Same>,
947 >::deserialize(deserializer)?))
948 }
949 }
950 match map.next_value::<DeserializeWith>() {
951 Ok(deserialize_with) => deserialize_with.0,
952 Err(err) => {
953 return Err(err);
954 }
955 }
956 });
957 }
958 Field::BookingTime => {
959 if r#booking_time_property.is_some() {
960 return Err(<A::Error as de::Error>::duplicate_field(
961 "bookingTime",
962 ));
963 }
964 r#booking_time_property = Some({
965 struct DeserializeWith(Vec<BookingTimeProperty>);
966 impl<'de> Deserialize<'de> for DeserializeWith {
967 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
968 where
969 D: Deserializer<'de>,
970 {
971 Ok(DeserializeWith(serde_with::As::<
972 serde_with::OneOrMany<serde_with::Same>,
973 >::deserialize(deserializer)?))
974 }
975 }
976 match map.next_value::<DeserializeWith>() {
977 Ok(deserialize_with) => deserialize_with.0,
978 Err(err) => {
979 return Err(err);
980 }
981 }
982 });
983 }
984 Field::Broker => {
985 if r#broker_property.is_some() {
986 return Err(<A::Error as de::Error>::duplicate_field("broker"));
987 }
988 r#broker_property = Some({
989 struct DeserializeWith(Vec<BrokerProperty>);
990 impl<'de> Deserialize<'de> for DeserializeWith {
991 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
992 where
993 D: Deserializer<'de>,
994 {
995 Ok(DeserializeWith(serde_with::As::<
996 serde_with::OneOrMany<serde_with::Same>,
997 >::deserialize(deserializer)?))
998 }
999 }
1000 match map.next_value::<DeserializeWith>() {
1001 Ok(deserialize_with) => deserialize_with.0,
1002 Err(err) => {
1003 return Err(err);
1004 }
1005 }
1006 });
1007 }
1008 Field::ModifiedTime => {
1009 if r#modified_time_property.is_some() {
1010 return Err(<A::Error as de::Error>::duplicate_field(
1011 "modifiedTime",
1012 ));
1013 }
1014 r#modified_time_property = Some({
1015 struct DeserializeWith(Vec<ModifiedTimeProperty>);
1016 impl<'de> Deserialize<'de> for DeserializeWith {
1017 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1018 where
1019 D: Deserializer<'de>,
1020 {
1021 Ok(DeserializeWith(serde_with::As::<
1022 serde_with::OneOrMany<serde_with::Same>,
1023 >::deserialize(deserializer)?))
1024 }
1025 }
1026 match map.next_value::<DeserializeWith>() {
1027 Ok(deserialize_with) => deserialize_with.0,
1028 Err(err) => {
1029 return Err(err);
1030 }
1031 }
1032 });
1033 }
1034 Field::PriceCurrency => {
1035 if r#price_currency_property.is_some() {
1036 return Err(<A::Error as de::Error>::duplicate_field(
1037 "priceCurrency",
1038 ));
1039 }
1040 r#price_currency_property = Some({
1041 struct DeserializeWith(Vec<PriceCurrencyProperty>);
1042 impl<'de> Deserialize<'de> for DeserializeWith {
1043 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1044 where
1045 D: Deserializer<'de>,
1046 {
1047 Ok(DeserializeWith(serde_with::As::<
1048 serde_with::OneOrMany<serde_with::Same>,
1049 >::deserialize(deserializer)?))
1050 }
1051 }
1052 match map.next_value::<DeserializeWith>() {
1053 Ok(deserialize_with) => deserialize_with.0,
1054 Err(err) => {
1055 return Err(err);
1056 }
1057 }
1058 });
1059 }
1060 Field::ProgramMembershipUsed => {
1061 if r#program_membership_used_property.is_some() {
1062 return Err(<A::Error as de::Error>::duplicate_field(
1063 "programMembershipUsed",
1064 ));
1065 }
1066 r#program_membership_used_property = Some({
1067 struct DeserializeWith(Vec<ProgramMembershipUsedProperty>);
1068 impl<'de> Deserialize<'de> for DeserializeWith {
1069 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1070 where
1071 D: Deserializer<'de>,
1072 {
1073 Ok(DeserializeWith(serde_with::As::<
1074 serde_with::OneOrMany<serde_with::Same>,
1075 >::deserialize(deserializer)?))
1076 }
1077 }
1078 match map.next_value::<DeserializeWith>() {
1079 Ok(deserialize_with) => deserialize_with.0,
1080 Err(err) => {
1081 return Err(err);
1082 }
1083 }
1084 });
1085 }
1086 Field::Provider => {
1087 if r#provider_property.is_some() {
1088 return Err(<A::Error as de::Error>::duplicate_field(
1089 "provider",
1090 ));
1091 }
1092 r#provider_property = Some({
1093 struct DeserializeWith(Vec<ProviderProperty>);
1094 impl<'de> Deserialize<'de> for DeserializeWith {
1095 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1096 where
1097 D: Deserializer<'de>,
1098 {
1099 Ok(DeserializeWith(serde_with::As::<
1100 serde_with::OneOrMany<serde_with::Same>,
1101 >::deserialize(deserializer)?))
1102 }
1103 }
1104 match map.next_value::<DeserializeWith>() {
1105 Ok(deserialize_with) => deserialize_with.0,
1106 Err(err) => {
1107 return Err(err);
1108 }
1109 }
1110 });
1111 }
1112 Field::ReservationFor => {
1113 if r#reservation_for_property.is_some() {
1114 return Err(<A::Error as de::Error>::duplicate_field(
1115 "reservationFor",
1116 ));
1117 }
1118 r#reservation_for_property = Some({
1119 struct DeserializeWith(Vec<ReservationForProperty>);
1120 impl<'de> Deserialize<'de> for DeserializeWith {
1121 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1122 where
1123 D: Deserializer<'de>,
1124 {
1125 Ok(DeserializeWith(serde_with::As::<
1126 serde_with::OneOrMany<serde_with::Same>,
1127 >::deserialize(deserializer)?))
1128 }
1129 }
1130 match map.next_value::<DeserializeWith>() {
1131 Ok(deserialize_with) => deserialize_with.0,
1132 Err(err) => {
1133 return Err(err);
1134 }
1135 }
1136 });
1137 }
1138 Field::ReservationId => {
1139 if r#reservation_id_property.is_some() {
1140 return Err(<A::Error as de::Error>::duplicate_field(
1141 "reservationId",
1142 ));
1143 }
1144 r#reservation_id_property = Some({
1145 struct DeserializeWith(Vec<ReservationIdProperty>);
1146 impl<'de> Deserialize<'de> for DeserializeWith {
1147 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1148 where
1149 D: Deserializer<'de>,
1150 {
1151 Ok(DeserializeWith(serde_with::As::<
1152 serde_with::OneOrMany<serde_with::Same>,
1153 >::deserialize(deserializer)?))
1154 }
1155 }
1156 match map.next_value::<DeserializeWith>() {
1157 Ok(deserialize_with) => deserialize_with.0,
1158 Err(err) => {
1159 return Err(err);
1160 }
1161 }
1162 });
1163 }
1164 Field::ReservationStatus => {
1165 if r#reservation_status_property.is_some() {
1166 return Err(<A::Error as de::Error>::duplicate_field(
1167 "reservationStatus",
1168 ));
1169 }
1170 r#reservation_status_property = Some({
1171 struct DeserializeWith(Vec<ReservationStatusProperty>);
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::ReservedTicket => {
1191 if r#reserved_ticket_property.is_some() {
1192 return Err(<A::Error as de::Error>::duplicate_field(
1193 "reservedTicket",
1194 ));
1195 }
1196 r#reserved_ticket_property = Some({
1197 struct DeserializeWith(Vec<ReservedTicketProperty>);
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::TotalPrice => {
1217 if r#total_price_property.is_some() {
1218 return Err(<A::Error as de::Error>::duplicate_field(
1219 "totalPrice",
1220 ));
1221 }
1222 r#total_price_property = Some({
1223 struct DeserializeWith(Vec<TotalPriceProperty>);
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::UnderName => {
1243 if r#under_name_property.is_some() {
1244 return Err(<A::Error as de::Error>::duplicate_field(
1245 "underName",
1246 ));
1247 }
1248 r#under_name_property = Some({
1249 struct DeserializeWith(Vec<UnderNameProperty>);
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::AdditionalType => {
1269 if r#additional_type_property.is_some() {
1270 return Err(<A::Error as de::Error>::duplicate_field(
1271 "additionalType",
1272 ));
1273 }
1274 r#additional_type_property = Some({
1275 struct DeserializeWith(Vec<AdditionalTypeProperty>);
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::AlternateName => {
1295 if r#alternate_name_property.is_some() {
1296 return Err(<A::Error as de::Error>::duplicate_field(
1297 "alternateName",
1298 ));
1299 }
1300 r#alternate_name_property = Some({
1301 struct DeserializeWith(Vec<AlternateNameProperty>);
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::Description => {
1321 if r#description_property.is_some() {
1322 return Err(<A::Error as de::Error>::duplicate_field(
1323 "description",
1324 ));
1325 }
1326 r#description_property = Some({
1327 struct DeserializeWith(Vec<DescriptionProperty>);
1328 impl<'de> Deserialize<'de> for DeserializeWith {
1329 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1330 where
1331 D: Deserializer<'de>,
1332 {
1333 Ok(DeserializeWith(serde_with::As::<
1334 serde_with::OneOrMany<serde_with::Same>,
1335 >::deserialize(deserializer)?))
1336 }
1337 }
1338 match map.next_value::<DeserializeWith>() {
1339 Ok(deserialize_with) => deserialize_with.0,
1340 Err(err) => {
1341 return Err(err);
1342 }
1343 }
1344 });
1345 }
1346 Field::DisambiguatingDescription => {
1347 if r#disambiguating_description_property.is_some() {
1348 return Err(<A::Error as de::Error>::duplicate_field(
1349 "disambiguatingDescription",
1350 ));
1351 }
1352 r#disambiguating_description_property = Some({
1353 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1354 impl<'de> Deserialize<'de> for DeserializeWith {
1355 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1356 where
1357 D: Deserializer<'de>,
1358 {
1359 Ok(DeserializeWith(serde_with::As::<
1360 serde_with::OneOrMany<serde_with::Same>,
1361 >::deserialize(deserializer)?))
1362 }
1363 }
1364 match map.next_value::<DeserializeWith>() {
1365 Ok(deserialize_with) => deserialize_with.0,
1366 Err(err) => {
1367 return Err(err);
1368 }
1369 }
1370 });
1371 }
1372 Field::Identifier => {
1373 if r#identifier_property.is_some() {
1374 return Err(<A::Error as de::Error>::duplicate_field(
1375 "identifier",
1376 ));
1377 }
1378 r#identifier_property = Some({
1379 struct DeserializeWith(Vec<IdentifierProperty>);
1380 impl<'de> Deserialize<'de> for DeserializeWith {
1381 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1382 where
1383 D: Deserializer<'de>,
1384 {
1385 Ok(DeserializeWith(serde_with::As::<
1386 serde_with::OneOrMany<serde_with::Same>,
1387 >::deserialize(deserializer)?))
1388 }
1389 }
1390 match map.next_value::<DeserializeWith>() {
1391 Ok(deserialize_with) => deserialize_with.0,
1392 Err(err) => {
1393 return Err(err);
1394 }
1395 }
1396 });
1397 }
1398 Field::Image => {
1399 if r#image_property.is_some() {
1400 return Err(<A::Error as de::Error>::duplicate_field("image"));
1401 }
1402 r#image_property = Some({
1403 struct DeserializeWith(Vec<ImageProperty>);
1404 impl<'de> Deserialize<'de> for DeserializeWith {
1405 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1406 where
1407 D: Deserializer<'de>,
1408 {
1409 Ok(DeserializeWith(serde_with::As::<
1410 serde_with::OneOrMany<serde_with::Same>,
1411 >::deserialize(deserializer)?))
1412 }
1413 }
1414 match map.next_value::<DeserializeWith>() {
1415 Ok(deserialize_with) => deserialize_with.0,
1416 Err(err) => {
1417 return Err(err);
1418 }
1419 }
1420 });
1421 }
1422 Field::MainEntityOfPage => {
1423 if r#main_entity_of_page_property.is_some() {
1424 return Err(<A::Error as de::Error>::duplicate_field(
1425 "mainEntityOfPage",
1426 ));
1427 }
1428 r#main_entity_of_page_property = Some({
1429 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1430 impl<'de> Deserialize<'de> for DeserializeWith {
1431 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1432 where
1433 D: Deserializer<'de>,
1434 {
1435 Ok(DeserializeWith(serde_with::As::<
1436 serde_with::OneOrMany<serde_with::Same>,
1437 >::deserialize(deserializer)?))
1438 }
1439 }
1440 match map.next_value::<DeserializeWith>() {
1441 Ok(deserialize_with) => deserialize_with.0,
1442 Err(err) => {
1443 return Err(err);
1444 }
1445 }
1446 });
1447 }
1448 Field::Name => {
1449 if r#name_property.is_some() {
1450 return Err(<A::Error as de::Error>::duplicate_field("name"));
1451 }
1452 r#name_property = Some({
1453 struct DeserializeWith(Vec<NameProperty>);
1454 impl<'de> Deserialize<'de> for DeserializeWith {
1455 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1456 where
1457 D: Deserializer<'de>,
1458 {
1459 Ok(DeserializeWith(serde_with::As::<
1460 serde_with::OneOrMany<serde_with::Same>,
1461 >::deserialize(deserializer)?))
1462 }
1463 }
1464 match map.next_value::<DeserializeWith>() {
1465 Ok(deserialize_with) => deserialize_with.0,
1466 Err(err) => {
1467 return Err(err);
1468 }
1469 }
1470 });
1471 }
1472 Field::PotentialAction => {
1473 if r#potential_action_property.is_some() {
1474 return Err(<A::Error as de::Error>::duplicate_field(
1475 "potentialAction",
1476 ));
1477 }
1478 r#potential_action_property = Some({
1479 struct DeserializeWith(Vec<PotentialActionProperty>);
1480 impl<'de> Deserialize<'de> for DeserializeWith {
1481 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1482 where
1483 D: Deserializer<'de>,
1484 {
1485 Ok(DeserializeWith(serde_with::As::<
1486 serde_with::OneOrMany<serde_with::Same>,
1487 >::deserialize(deserializer)?))
1488 }
1489 }
1490 match map.next_value::<DeserializeWith>() {
1491 Ok(deserialize_with) => deserialize_with.0,
1492 Err(err) => {
1493 return Err(err);
1494 }
1495 }
1496 });
1497 }
1498 Field::SameAs => {
1499 if r#same_as_property.is_some() {
1500 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1501 }
1502 r#same_as_property = Some({
1503 struct DeserializeWith(Vec<SameAsProperty>);
1504 impl<'de> Deserialize<'de> for DeserializeWith {
1505 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1506 where
1507 D: Deserializer<'de>,
1508 {
1509 Ok(DeserializeWith(serde_with::As::<
1510 serde_with::OneOrMany<serde_with::Same>,
1511 >::deserialize(deserializer)?))
1512 }
1513 }
1514 match map.next_value::<DeserializeWith>() {
1515 Ok(deserialize_with) => deserialize_with.0,
1516 Err(err) => {
1517 return Err(err);
1518 }
1519 }
1520 });
1521 }
1522 Field::SubjectOf => {
1523 if r#subject_of_property.is_some() {
1524 return Err(<A::Error as de::Error>::duplicate_field(
1525 "subjectOf",
1526 ));
1527 }
1528 r#subject_of_property = Some({
1529 struct DeserializeWith(Vec<SubjectOfProperty>);
1530 impl<'de> Deserialize<'de> for DeserializeWith {
1531 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1532 where
1533 D: Deserializer<'de>,
1534 {
1535 Ok(DeserializeWith(serde_with::As::<
1536 serde_with::OneOrMany<serde_with::Same>,
1537 >::deserialize(deserializer)?))
1538 }
1539 }
1540 match map.next_value::<DeserializeWith>() {
1541 Ok(deserialize_with) => deserialize_with.0,
1542 Err(err) => {
1543 return Err(err);
1544 }
1545 }
1546 });
1547 }
1548 Field::Url => {
1549 if r#url_property.is_some() {
1550 return Err(<A::Error as de::Error>::duplicate_field("url"));
1551 }
1552 r#url_property = Some({
1553 struct DeserializeWith(Vec<UrlProperty>);
1554 impl<'de> Deserialize<'de> for DeserializeWith {
1555 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1556 where
1557 D: Deserializer<'de>,
1558 {
1559 Ok(DeserializeWith(serde_with::As::<
1560 serde_with::OneOrMany<serde_with::Same>,
1561 >::deserialize(deserializer)?))
1562 }
1563 }
1564 match map.next_value::<DeserializeWith>() {
1565 Ok(deserialize_with) => deserialize_with.0,
1566 Err(err) => {
1567 return Err(err);
1568 }
1569 }
1570 });
1571 }
1572 Field::Ignore => {
1573 let _ = map.next_value::<de::IgnoredAny>()?;
1574 }
1575 }
1576 }
1577 Ok(ReservationPackage {
1578 r#sub_reservation: r#sub_reservation_property.unwrap_or_default(),
1579 r#booking_agent: r#booking_agent_property.unwrap_or_default(),
1580 r#booking_time: r#booking_time_property.unwrap_or_default(),
1581 r#broker: r#broker_property.unwrap_or_default(),
1582 r#modified_time: r#modified_time_property.unwrap_or_default(),
1583 r#price_currency: r#price_currency_property.unwrap_or_default(),
1584 r#program_membership_used: r#program_membership_used_property
1585 .unwrap_or_default(),
1586 r#provider: r#provider_property.unwrap_or_default(),
1587 r#reservation_for: r#reservation_for_property.unwrap_or_default(),
1588 r#reservation_id: r#reservation_id_property.unwrap_or_default(),
1589 r#reservation_status: r#reservation_status_property.unwrap_or_default(),
1590 r#reserved_ticket: r#reserved_ticket_property.unwrap_or_default(),
1591 r#total_price: r#total_price_property.unwrap_or_default(),
1592 r#under_name: r#under_name_property.unwrap_or_default(),
1593 r#additional_type: r#additional_type_property.unwrap_or_default(),
1594 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1595 r#description: r#description_property.unwrap_or_default(),
1596 r#disambiguating_description: r#disambiguating_description_property
1597 .unwrap_or_default(),
1598 r#identifier: r#identifier_property.unwrap_or_default(),
1599 r#image: r#image_property.unwrap_or_default(),
1600 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1601 r#name: r#name_property.unwrap_or_default(),
1602 r#potential_action: r#potential_action_property.unwrap_or_default(),
1603 r#same_as: r#same_as_property.unwrap_or_default(),
1604 r#subject_of: r#subject_of_property.unwrap_or_default(),
1605 r#url: r#url_property.unwrap_or_default(),
1606 })
1607 }
1608 }
1609 const FIELDS: &[&str] = &[
1610 "subReservation",
1611 "bookingAgent",
1612 "bookingTime",
1613 "broker",
1614 "modifiedTime",
1615 "priceCurrency",
1616 "programMembershipUsed",
1617 "provider",
1618 "reservationFor",
1619 "reservationId",
1620 "reservationStatus",
1621 "reservedTicket",
1622 "totalPrice",
1623 "underName",
1624 "additionalType",
1625 "alternateName",
1626 "description",
1627 "disambiguatingDescription",
1628 "identifier",
1629 "image",
1630 "mainEntityOfPage",
1631 "name",
1632 "potentialAction",
1633 "sameAs",
1634 "subjectOf",
1635 "url",
1636 ];
1637 deserializer.deserialize_struct("ReservationPackage", FIELDS, ClassVisitor)
1638 }
1639 }
1640}