1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct TrainTrip {
6 pub r#arrival_platform: Vec<ArrivalPlatformProperty>,
8 pub r#arrival_station: Vec<ArrivalStationProperty>,
10 pub r#departure_platform: Vec<DeparturePlatformProperty>,
12 pub r#departure_station: Vec<DepartureStationProperty>,
14 pub r#train_name: Vec<TrainNameProperty>,
16 pub r#train_number: Vec<TrainNumberProperty>,
18 pub r#additional_type: Vec<AdditionalTypeProperty>,
20 pub r#alternate_name: Vec<AlternateNameProperty>,
22 pub r#description: Vec<DescriptionProperty>,
24 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
26 pub r#identifier: Vec<IdentifierProperty>,
28 pub r#image: Vec<ImageProperty>,
30 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
32 pub r#name: Vec<NameProperty>,
34 pub r#potential_action: Vec<PotentialActionProperty>,
36 pub r#same_as: Vec<SameAsProperty>,
38 pub r#subject_of: Vec<SubjectOfProperty>,
40 pub r#url: Vec<UrlProperty>,
42 pub r#arrival_time: Vec<ArrivalTimeProperty>,
44 pub r#departure_time: Vec<DepartureTimeProperty>,
46 pub r#itinerary: Vec<ItineraryProperty>,
48 pub r#offers: Vec<OffersProperty>,
50 pub r#part_of_trip: Vec<PartOfTripProperty>,
52 pub r#provider: Vec<ProviderProperty>,
54 pub r#sub_trip: Vec<SubTripProperty>,
56 pub r#trip_origin: Vec<TripOriginProperty>,
58}
59pub trait TrainTripTrait {
61 fn get_arrival_platform(&self) -> &[ArrivalPlatformProperty];
63 fn take_arrival_platform(&mut self) -> Vec<ArrivalPlatformProperty>;
65 fn get_arrival_station(&self) -> &[ArrivalStationProperty];
67 fn take_arrival_station(&mut self) -> Vec<ArrivalStationProperty>;
69 fn get_departure_platform(&self) -> &[DeparturePlatformProperty];
71 fn take_departure_platform(&mut self) -> Vec<DeparturePlatformProperty>;
73 fn get_departure_station(&self) -> &[DepartureStationProperty];
75 fn take_departure_station(&mut self) -> Vec<DepartureStationProperty>;
77 fn get_train_name(&self) -> &[TrainNameProperty];
79 fn take_train_name(&mut self) -> Vec<TrainNameProperty>;
81 fn get_train_number(&self) -> &[TrainNumberProperty];
83 fn take_train_number(&mut self) -> Vec<TrainNumberProperty>;
85}
86impl TrainTripTrait for TrainTrip {
87 fn get_arrival_platform(&self) -> &[ArrivalPlatformProperty] {
88 self.r#arrival_platform.as_slice()
89 }
90 fn take_arrival_platform(&mut self) -> Vec<ArrivalPlatformProperty> {
91 std::mem::take(&mut self.r#arrival_platform)
92 }
93 fn get_arrival_station(&self) -> &[ArrivalStationProperty] {
94 self.r#arrival_station.as_slice()
95 }
96 fn take_arrival_station(&mut self) -> Vec<ArrivalStationProperty> {
97 std::mem::take(&mut self.r#arrival_station)
98 }
99 fn get_departure_platform(&self) -> &[DeparturePlatformProperty] {
100 self.r#departure_platform.as_slice()
101 }
102 fn take_departure_platform(&mut self) -> Vec<DeparturePlatformProperty> {
103 std::mem::take(&mut self.r#departure_platform)
104 }
105 fn get_departure_station(&self) -> &[DepartureStationProperty] {
106 self.r#departure_station.as_slice()
107 }
108 fn take_departure_station(&mut self) -> Vec<DepartureStationProperty> {
109 std::mem::take(&mut self.r#departure_station)
110 }
111 fn get_train_name(&self) -> &[TrainNameProperty] {
112 self.r#train_name.as_slice()
113 }
114 fn take_train_name(&mut self) -> Vec<TrainNameProperty> {
115 std::mem::take(&mut self.r#train_name)
116 }
117 fn get_train_number(&self) -> &[TrainNumberProperty] {
118 self.r#train_number.as_slice()
119 }
120 fn take_train_number(&mut self) -> Vec<TrainNumberProperty> {
121 std::mem::take(&mut self.r#train_number)
122 }
123}
124impl ThingTrait for TrainTrip {
125 fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
126 self.r#additional_type.as_slice()
127 }
128 fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
129 std::mem::take(&mut self.r#additional_type)
130 }
131 fn get_alternate_name(&self) -> &[AlternateNameProperty] {
132 self.r#alternate_name.as_slice()
133 }
134 fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
135 std::mem::take(&mut self.r#alternate_name)
136 }
137 fn get_description(&self) -> &[DescriptionProperty] {
138 self.r#description.as_slice()
139 }
140 fn take_description(&mut self) -> Vec<DescriptionProperty> {
141 std::mem::take(&mut self.r#description)
142 }
143 fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
144 self.r#disambiguating_description.as_slice()
145 }
146 fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
147 std::mem::take(&mut self.r#disambiguating_description)
148 }
149 fn get_identifier(&self) -> &[IdentifierProperty] {
150 self.r#identifier.as_slice()
151 }
152 fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
153 std::mem::take(&mut self.r#identifier)
154 }
155 fn get_image(&self) -> &[ImageProperty] {
156 self.r#image.as_slice()
157 }
158 fn take_image(&mut self) -> Vec<ImageProperty> {
159 std::mem::take(&mut self.r#image)
160 }
161 fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
162 self.r#main_entity_of_page.as_slice()
163 }
164 fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
165 std::mem::take(&mut self.r#main_entity_of_page)
166 }
167 fn get_name(&self) -> &[NameProperty] {
168 self.r#name.as_slice()
169 }
170 fn take_name(&mut self) -> Vec<NameProperty> {
171 std::mem::take(&mut self.r#name)
172 }
173 fn get_potential_action(&self) -> &[PotentialActionProperty] {
174 self.r#potential_action.as_slice()
175 }
176 fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
177 std::mem::take(&mut self.r#potential_action)
178 }
179 fn get_same_as(&self) -> &[SameAsProperty] {
180 self.r#same_as.as_slice()
181 }
182 fn take_same_as(&mut self) -> Vec<SameAsProperty> {
183 std::mem::take(&mut self.r#same_as)
184 }
185 fn get_subject_of(&self) -> &[SubjectOfProperty] {
186 self.r#subject_of.as_slice()
187 }
188 fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
189 std::mem::take(&mut self.r#subject_of)
190 }
191 fn get_url(&self) -> &[UrlProperty] {
192 self.r#url.as_slice()
193 }
194 fn take_url(&mut self) -> Vec<UrlProperty> {
195 std::mem::take(&mut self.r#url)
196 }
197}
198impl TripTrait for TrainTrip {
199 fn get_arrival_time(&self) -> &[ArrivalTimeProperty] {
200 self.r#arrival_time.as_slice()
201 }
202 fn take_arrival_time(&mut self) -> Vec<ArrivalTimeProperty> {
203 std::mem::take(&mut self.r#arrival_time)
204 }
205 fn get_departure_time(&self) -> &[DepartureTimeProperty] {
206 self.r#departure_time.as_slice()
207 }
208 fn take_departure_time(&mut self) -> Vec<DepartureTimeProperty> {
209 std::mem::take(&mut self.r#departure_time)
210 }
211 fn get_itinerary(&self) -> &[ItineraryProperty] {
212 self.r#itinerary.as_slice()
213 }
214 fn take_itinerary(&mut self) -> Vec<ItineraryProperty> {
215 std::mem::take(&mut self.r#itinerary)
216 }
217 fn get_offers(&self) -> &[OffersProperty] {
218 self.r#offers.as_slice()
219 }
220 fn take_offers(&mut self) -> Vec<OffersProperty> {
221 std::mem::take(&mut self.r#offers)
222 }
223 fn get_part_of_trip(&self) -> &[PartOfTripProperty] {
224 self.r#part_of_trip.as_slice()
225 }
226 fn take_part_of_trip(&mut self) -> Vec<PartOfTripProperty> {
227 std::mem::take(&mut self.r#part_of_trip)
228 }
229 fn get_provider(&self) -> &[ProviderProperty] {
230 self.r#provider.as_slice()
231 }
232 fn take_provider(&mut self) -> Vec<ProviderProperty> {
233 std::mem::take(&mut self.r#provider)
234 }
235 fn get_sub_trip(&self) -> &[SubTripProperty] {
236 self.r#sub_trip.as_slice()
237 }
238 fn take_sub_trip(&mut self) -> Vec<SubTripProperty> {
239 std::mem::take(&mut self.r#sub_trip)
240 }
241 fn get_trip_origin(&self) -> &[TripOriginProperty] {
242 self.r#trip_origin.as_slice()
243 }
244 fn take_trip_origin(&mut self) -> Vec<TripOriginProperty> {
245 std::mem::take(&mut self.r#trip_origin)
246 }
247}
248#[cfg(feature = "serde")]
249mod serde {
250 use std::{fmt, fmt::Formatter};
251
252 use ::serde::{
253 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
254 };
255
256 use super::*;
257 impl Serialize for TrainTrip {
258 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
259 where
260 S: Serializer,
261 {
262 let len: usize = [
263 !Vec::is_empty(&self.r#arrival_platform) as usize,
264 !Vec::is_empty(&self.r#arrival_station) as usize,
265 !Vec::is_empty(&self.r#departure_platform) as usize,
266 !Vec::is_empty(&self.r#departure_station) as usize,
267 !Vec::is_empty(&self.r#train_name) as usize,
268 !Vec::is_empty(&self.r#train_number) as usize,
269 !Vec::is_empty(&self.r#additional_type) as usize,
270 !Vec::is_empty(&self.r#alternate_name) as usize,
271 !Vec::is_empty(&self.r#description) as usize,
272 !Vec::is_empty(&self.r#disambiguating_description) as usize,
273 !Vec::is_empty(&self.r#identifier) as usize,
274 !Vec::is_empty(&self.r#image) as usize,
275 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
276 !Vec::is_empty(&self.r#name) as usize,
277 !Vec::is_empty(&self.r#potential_action) as usize,
278 !Vec::is_empty(&self.r#same_as) as usize,
279 !Vec::is_empty(&self.r#subject_of) as usize,
280 !Vec::is_empty(&self.r#url) as usize,
281 !Vec::is_empty(&self.r#arrival_time) as usize,
282 !Vec::is_empty(&self.r#departure_time) as usize,
283 !Vec::is_empty(&self.r#itinerary) as usize,
284 !Vec::is_empty(&self.r#offers) as usize,
285 !Vec::is_empty(&self.r#part_of_trip) as usize,
286 !Vec::is_empty(&self.r#provider) as usize,
287 !Vec::is_empty(&self.r#sub_trip) as usize,
288 !Vec::is_empty(&self.r#trip_origin) as usize,
289 ]
290 .iter()
291 .sum();
292 let mut serialize_struct = Serializer::serialize_struct(serializer, "TrainTrip", len)?;
293 if !Vec::is_empty(&self.r#arrival_platform) {
294 serialize_struct.serialize_field("arrivalPlatform", {
295 struct SerializeWith<'a>(&'a Vec<ArrivalPlatformProperty>);
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#arrival_platform)
307 })?;
308 } else {
309 serialize_struct.skip_field("arrivalPlatform")?;
310 }
311 if !Vec::is_empty(&self.r#arrival_station) {
312 serialize_struct.serialize_field("arrivalStation", {
313 struct SerializeWith<'a>(&'a Vec<ArrivalStationProperty>);
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#arrival_station)
325 })?;
326 } else {
327 serialize_struct.skip_field("arrivalStation")?;
328 }
329 if !Vec::is_empty(&self.r#departure_platform) {
330 serialize_struct.serialize_field("departurePlatform", {
331 struct SerializeWith<'a>(&'a Vec<DeparturePlatformProperty>);
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#departure_platform)
343 })?;
344 } else {
345 serialize_struct.skip_field("departurePlatform")?;
346 }
347 if !Vec::is_empty(&self.r#departure_station) {
348 serialize_struct.serialize_field("departureStation", {
349 struct SerializeWith<'a>(&'a Vec<DepartureStationProperty>);
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#departure_station)
361 })?;
362 } else {
363 serialize_struct.skip_field("departureStation")?;
364 }
365 if !Vec::is_empty(&self.r#train_name) {
366 serialize_struct.serialize_field("trainName", {
367 struct SerializeWith<'a>(&'a Vec<TrainNameProperty>);
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#train_name)
379 })?;
380 } else {
381 serialize_struct.skip_field("trainName")?;
382 }
383 if !Vec::is_empty(&self.r#train_number) {
384 serialize_struct.serialize_field("trainNumber", {
385 struct SerializeWith<'a>(&'a Vec<TrainNumberProperty>);
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#train_number)
397 })?;
398 } else {
399 serialize_struct.skip_field("trainNumber")?;
400 }
401 if !Vec::is_empty(&self.r#additional_type) {
402 serialize_struct.serialize_field("additionalType", {
403 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
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#additional_type)
415 })?;
416 } else {
417 serialize_struct.skip_field("additionalType")?;
418 }
419 if !Vec::is_empty(&self.r#alternate_name) {
420 serialize_struct.serialize_field("alternateName", {
421 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
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#alternate_name)
433 })?;
434 } else {
435 serialize_struct.skip_field("alternateName")?;
436 }
437 if !Vec::is_empty(&self.r#description) {
438 serialize_struct.serialize_field("description", {
439 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
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#description)
451 })?;
452 } else {
453 serialize_struct.skip_field("description")?;
454 }
455 if !Vec::is_empty(&self.r#disambiguating_description) {
456 serialize_struct.serialize_field("disambiguatingDescription", {
457 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
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#disambiguating_description)
469 })?;
470 } else {
471 serialize_struct.skip_field("disambiguatingDescription")?;
472 }
473 if !Vec::is_empty(&self.r#identifier) {
474 serialize_struct.serialize_field("identifier", {
475 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
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#identifier)
487 })?;
488 } else {
489 serialize_struct.skip_field("identifier")?;
490 }
491 if !Vec::is_empty(&self.r#image) {
492 serialize_struct.serialize_field("image", {
493 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
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#image)
505 })?;
506 } else {
507 serialize_struct.skip_field("image")?;
508 }
509 if !Vec::is_empty(&self.r#main_entity_of_page) {
510 serialize_struct.serialize_field("mainEntityOfPage", {
511 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
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#main_entity_of_page)
523 })?;
524 } else {
525 serialize_struct.skip_field("mainEntityOfPage")?;
526 }
527 if !Vec::is_empty(&self.r#name) {
528 serialize_struct.serialize_field("name", {
529 struct SerializeWith<'a>(&'a Vec<NameProperty>);
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#name)
541 })?;
542 } else {
543 serialize_struct.skip_field("name")?;
544 }
545 if !Vec::is_empty(&self.r#potential_action) {
546 serialize_struct.serialize_field("potentialAction", {
547 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
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#potential_action)
559 })?;
560 } else {
561 serialize_struct.skip_field("potentialAction")?;
562 }
563 if !Vec::is_empty(&self.r#same_as) {
564 serialize_struct.serialize_field("sameAs", {
565 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
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#same_as)
577 })?;
578 } else {
579 serialize_struct.skip_field("sameAs")?;
580 }
581 if !Vec::is_empty(&self.r#subject_of) {
582 serialize_struct.serialize_field("subjectOf", {
583 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
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#subject_of)
595 })?;
596 } else {
597 serialize_struct.skip_field("subjectOf")?;
598 }
599 if !Vec::is_empty(&self.r#url) {
600 serialize_struct.serialize_field("url", {
601 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
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#url)
613 })?;
614 } else {
615 serialize_struct.skip_field("url")?;
616 }
617 if !Vec::is_empty(&self.r#arrival_time) {
618 serialize_struct.serialize_field("arrivalTime", {
619 struct SerializeWith<'a>(&'a Vec<ArrivalTimeProperty>);
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#arrival_time)
631 })?;
632 } else {
633 serialize_struct.skip_field("arrivalTime")?;
634 }
635 if !Vec::is_empty(&self.r#departure_time) {
636 serialize_struct.serialize_field("departureTime", {
637 struct SerializeWith<'a>(&'a Vec<DepartureTimeProperty>);
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#departure_time)
649 })?;
650 } else {
651 serialize_struct.skip_field("departureTime")?;
652 }
653 if !Vec::is_empty(&self.r#itinerary) {
654 serialize_struct.serialize_field("itinerary", {
655 struct SerializeWith<'a>(&'a Vec<ItineraryProperty>);
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#itinerary)
667 })?;
668 } else {
669 serialize_struct.skip_field("itinerary")?;
670 }
671 if !Vec::is_empty(&self.r#offers) {
672 serialize_struct.serialize_field("offers", {
673 struct SerializeWith<'a>(&'a Vec<OffersProperty>);
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#offers)
685 })?;
686 } else {
687 serialize_struct.skip_field("offers")?;
688 }
689 if !Vec::is_empty(&self.r#part_of_trip) {
690 serialize_struct.serialize_field("partOfTrip", {
691 struct SerializeWith<'a>(&'a Vec<PartOfTripProperty>);
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#part_of_trip)
703 })?;
704 } else {
705 serialize_struct.skip_field("partOfTrip")?;
706 }
707 if !Vec::is_empty(&self.r#provider) {
708 serialize_struct.serialize_field("provider", {
709 struct SerializeWith<'a>(&'a Vec<ProviderProperty>);
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#provider)
721 })?;
722 } else {
723 serialize_struct.skip_field("provider")?;
724 }
725 if !Vec::is_empty(&self.r#sub_trip) {
726 serialize_struct.serialize_field("subTrip", {
727 struct SerializeWith<'a>(&'a Vec<SubTripProperty>);
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#sub_trip)
739 })?;
740 } else {
741 serialize_struct.skip_field("subTrip")?;
742 }
743 if !Vec::is_empty(&self.r#trip_origin) {
744 serialize_struct.serialize_field("tripOrigin", {
745 struct SerializeWith<'a>(&'a Vec<TripOriginProperty>);
746 impl<'a> Serialize for SerializeWith<'a> {
747 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
748 where
749 S: Serializer,
750 {
751 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
752 self.0, serializer,
753 )
754 }
755 }
756 &SerializeWith(&self.r#trip_origin)
757 })?;
758 } else {
759 serialize_struct.skip_field("tripOrigin")?;
760 }
761 serialize_struct.end()
762 }
763 }
764 impl<'de> Deserialize<'de> for TrainTrip {
765 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
766 where
767 D: Deserializer<'de>,
768 {
769 enum Field {
770 ArrivalPlatform,
771 ArrivalStation,
772 DeparturePlatform,
773 DepartureStation,
774 TrainName,
775 TrainNumber,
776 AdditionalType,
777 AlternateName,
778 Description,
779 DisambiguatingDescription,
780 Identifier,
781 Image,
782 MainEntityOfPage,
783 Name,
784 PotentialAction,
785 SameAs,
786 SubjectOf,
787 Url,
788 ArrivalTime,
789 DepartureTime,
790 Itinerary,
791 Offers,
792 PartOfTrip,
793 Provider,
794 SubTrip,
795 TripOrigin,
796 Ignore,
797 }
798 struct FieldVisitor;
799 impl<'de> Visitor<'de> for FieldVisitor {
800 type Value = Field;
801 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
802 formatter.write_str("field identifier")
803 }
804 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
805 where
806 E: de::Error,
807 {
808 match value {
809 "arrivalPlatform" => Ok(Field::ArrivalPlatform),
810 "arrivalStation" => Ok(Field::ArrivalStation),
811 "departurePlatform" => Ok(Field::DeparturePlatform),
812 "departureStation" => Ok(Field::DepartureStation),
813 "trainName" => Ok(Field::TrainName),
814 "trainNumber" => Ok(Field::TrainNumber),
815 "additionalType" => Ok(Field::AdditionalType),
816 "alternateName" => Ok(Field::AlternateName),
817 "description" => Ok(Field::Description),
818 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
819 "identifier" => Ok(Field::Identifier),
820 "image" => Ok(Field::Image),
821 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
822 "name" => Ok(Field::Name),
823 "potentialAction" => Ok(Field::PotentialAction),
824 "sameAs" => Ok(Field::SameAs),
825 "subjectOf" => Ok(Field::SubjectOf),
826 "url" => Ok(Field::Url),
827 "arrivalTime" => Ok(Field::ArrivalTime),
828 "departureTime" => Ok(Field::DepartureTime),
829 "itinerary" => Ok(Field::Itinerary),
830 "offers" => Ok(Field::Offers),
831 "partOfTrip" => Ok(Field::PartOfTrip),
832 "provider" => Ok(Field::Provider),
833 "subTrip" => Ok(Field::SubTrip),
834 "tripOrigin" => Ok(Field::TripOrigin),
835 "id" | "type" => Ok(Field::Ignore),
836 _ => Err(de::Error::unknown_field(value, FIELDS)),
837 }
838 }
839 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
840 where
841 E: de::Error,
842 {
843 match value {
844 b"arrivalPlatform" => Ok(Field::ArrivalPlatform),
845 b"arrivalStation" => Ok(Field::ArrivalStation),
846 b"departurePlatform" => Ok(Field::DeparturePlatform),
847 b"departureStation" => Ok(Field::DepartureStation),
848 b"trainName" => Ok(Field::TrainName),
849 b"trainNumber" => Ok(Field::TrainNumber),
850 b"additionalType" => Ok(Field::AdditionalType),
851 b"alternateName" => Ok(Field::AlternateName),
852 b"description" => Ok(Field::Description),
853 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
854 b"identifier" => Ok(Field::Identifier),
855 b"image" => Ok(Field::Image),
856 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
857 b"name" => Ok(Field::Name),
858 b"potentialAction" => Ok(Field::PotentialAction),
859 b"sameAs" => Ok(Field::SameAs),
860 b"subjectOf" => Ok(Field::SubjectOf),
861 b"url" => Ok(Field::Url),
862 b"arrivalTime" => Ok(Field::ArrivalTime),
863 b"departureTime" => Ok(Field::DepartureTime),
864 b"itinerary" => Ok(Field::Itinerary),
865 b"offers" => Ok(Field::Offers),
866 b"partOfTrip" => Ok(Field::PartOfTrip),
867 b"provider" => Ok(Field::Provider),
868 b"subTrip" => Ok(Field::SubTrip),
869 b"tripOrigin" => Ok(Field::TripOrigin),
870 b"id" | b"type" => Ok(Field::Ignore),
871 _ => {
872 let value = &String::from_utf8_lossy(value);
873 Err(de::Error::unknown_field(value, FIELDS))
874 }
875 }
876 }
877 }
878 impl<'de> Deserialize<'de> for Field {
879 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
880 where
881 D: Deserializer<'de>,
882 {
883 deserializer.deserialize_identifier(FieldVisitor)
884 }
885 }
886 struct ClassVisitor;
887 impl<'de> Visitor<'de> for ClassVisitor {
888 type Value = TrainTrip;
889 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
890 formatter.write_str("schema.org schema TrainTrip")
891 }
892 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
893 where
894 A: de::MapAccess<'de>,
895 {
896 let mut r#arrival_platform_property = None;
897 let mut r#arrival_station_property = None;
898 let mut r#departure_platform_property = None;
899 let mut r#departure_station_property = None;
900 let mut r#train_name_property = None;
901 let mut r#train_number_property = None;
902 let mut r#additional_type_property = None;
903 let mut r#alternate_name_property = None;
904 let mut r#description_property = None;
905 let mut r#disambiguating_description_property = None;
906 let mut r#identifier_property = None;
907 let mut r#image_property = None;
908 let mut r#main_entity_of_page_property = None;
909 let mut r#name_property = None;
910 let mut r#potential_action_property = None;
911 let mut r#same_as_property = None;
912 let mut r#subject_of_property = None;
913 let mut r#url_property = None;
914 let mut r#arrival_time_property = None;
915 let mut r#departure_time_property = None;
916 let mut r#itinerary_property = None;
917 let mut r#offers_property = None;
918 let mut r#part_of_trip_property = None;
919 let mut r#provider_property = None;
920 let mut r#sub_trip_property = None;
921 let mut r#trip_origin_property = None;
922 while let Some(key) = map.next_key::<Field>()? {
923 match key {
924 Field::ArrivalPlatform => {
925 if r#arrival_platform_property.is_some() {
926 return Err(<A::Error as de::Error>::duplicate_field(
927 "arrivalPlatform",
928 ));
929 }
930 r#arrival_platform_property = Some({
931 struct DeserializeWith(Vec<ArrivalPlatformProperty>);
932 impl<'de> Deserialize<'de> for DeserializeWith {
933 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
934 where
935 D: Deserializer<'de>,
936 {
937 Ok(DeserializeWith(serde_with::As::<
938 serde_with::OneOrMany<serde_with::Same>,
939 >::deserialize(deserializer)?))
940 }
941 }
942 match map.next_value::<DeserializeWith>() {
943 Ok(deserialize_with) => deserialize_with.0,
944 Err(err) => {
945 return Err(err);
946 }
947 }
948 });
949 }
950 Field::ArrivalStation => {
951 if r#arrival_station_property.is_some() {
952 return Err(<A::Error as de::Error>::duplicate_field(
953 "arrivalStation",
954 ));
955 }
956 r#arrival_station_property = Some({
957 struct DeserializeWith(Vec<ArrivalStationProperty>);
958 impl<'de> Deserialize<'de> for DeserializeWith {
959 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
960 where
961 D: Deserializer<'de>,
962 {
963 Ok(DeserializeWith(serde_with::As::<
964 serde_with::OneOrMany<serde_with::Same>,
965 >::deserialize(deserializer)?))
966 }
967 }
968 match map.next_value::<DeserializeWith>() {
969 Ok(deserialize_with) => deserialize_with.0,
970 Err(err) => {
971 return Err(err);
972 }
973 }
974 });
975 }
976 Field::DeparturePlatform => {
977 if r#departure_platform_property.is_some() {
978 return Err(<A::Error as de::Error>::duplicate_field(
979 "departurePlatform",
980 ));
981 }
982 r#departure_platform_property = Some({
983 struct DeserializeWith(Vec<DeparturePlatformProperty>);
984 impl<'de> Deserialize<'de> for DeserializeWith {
985 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
986 where
987 D: Deserializer<'de>,
988 {
989 Ok(DeserializeWith(serde_with::As::<
990 serde_with::OneOrMany<serde_with::Same>,
991 >::deserialize(deserializer)?))
992 }
993 }
994 match map.next_value::<DeserializeWith>() {
995 Ok(deserialize_with) => deserialize_with.0,
996 Err(err) => {
997 return Err(err);
998 }
999 }
1000 });
1001 }
1002 Field::DepartureStation => {
1003 if r#departure_station_property.is_some() {
1004 return Err(<A::Error as de::Error>::duplicate_field(
1005 "departureStation",
1006 ));
1007 }
1008 r#departure_station_property = Some({
1009 struct DeserializeWith(Vec<DepartureStationProperty>);
1010 impl<'de> Deserialize<'de> for DeserializeWith {
1011 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1012 where
1013 D: Deserializer<'de>,
1014 {
1015 Ok(DeserializeWith(serde_with::As::<
1016 serde_with::OneOrMany<serde_with::Same>,
1017 >::deserialize(deserializer)?))
1018 }
1019 }
1020 match map.next_value::<DeserializeWith>() {
1021 Ok(deserialize_with) => deserialize_with.0,
1022 Err(err) => {
1023 return Err(err);
1024 }
1025 }
1026 });
1027 }
1028 Field::TrainName => {
1029 if r#train_name_property.is_some() {
1030 return Err(<A::Error as de::Error>::duplicate_field(
1031 "trainName",
1032 ));
1033 }
1034 r#train_name_property = Some({
1035 struct DeserializeWith(Vec<TrainNameProperty>);
1036 impl<'de> Deserialize<'de> for DeserializeWith {
1037 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1038 where
1039 D: Deserializer<'de>,
1040 {
1041 Ok(DeserializeWith(serde_with::As::<
1042 serde_with::OneOrMany<serde_with::Same>,
1043 >::deserialize(deserializer)?))
1044 }
1045 }
1046 match map.next_value::<DeserializeWith>() {
1047 Ok(deserialize_with) => deserialize_with.0,
1048 Err(err) => {
1049 return Err(err);
1050 }
1051 }
1052 });
1053 }
1054 Field::TrainNumber => {
1055 if r#train_number_property.is_some() {
1056 return Err(<A::Error as de::Error>::duplicate_field(
1057 "trainNumber",
1058 ));
1059 }
1060 r#train_number_property = Some({
1061 struct DeserializeWith(Vec<TrainNumberProperty>);
1062 impl<'de> Deserialize<'de> for DeserializeWith {
1063 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1064 where
1065 D: Deserializer<'de>,
1066 {
1067 Ok(DeserializeWith(serde_with::As::<
1068 serde_with::OneOrMany<serde_with::Same>,
1069 >::deserialize(deserializer)?))
1070 }
1071 }
1072 match map.next_value::<DeserializeWith>() {
1073 Ok(deserialize_with) => deserialize_with.0,
1074 Err(err) => {
1075 return Err(err);
1076 }
1077 }
1078 });
1079 }
1080 Field::AdditionalType => {
1081 if r#additional_type_property.is_some() {
1082 return Err(<A::Error as de::Error>::duplicate_field(
1083 "additionalType",
1084 ));
1085 }
1086 r#additional_type_property = Some({
1087 struct DeserializeWith(Vec<AdditionalTypeProperty>);
1088 impl<'de> Deserialize<'de> for DeserializeWith {
1089 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1090 where
1091 D: Deserializer<'de>,
1092 {
1093 Ok(DeserializeWith(serde_with::As::<
1094 serde_with::OneOrMany<serde_with::Same>,
1095 >::deserialize(deserializer)?))
1096 }
1097 }
1098 match map.next_value::<DeserializeWith>() {
1099 Ok(deserialize_with) => deserialize_with.0,
1100 Err(err) => {
1101 return Err(err);
1102 }
1103 }
1104 });
1105 }
1106 Field::AlternateName => {
1107 if r#alternate_name_property.is_some() {
1108 return Err(<A::Error as de::Error>::duplicate_field(
1109 "alternateName",
1110 ));
1111 }
1112 r#alternate_name_property = Some({
1113 struct DeserializeWith(Vec<AlternateNameProperty>);
1114 impl<'de> Deserialize<'de> for DeserializeWith {
1115 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1116 where
1117 D: Deserializer<'de>,
1118 {
1119 Ok(DeserializeWith(serde_with::As::<
1120 serde_with::OneOrMany<serde_with::Same>,
1121 >::deserialize(deserializer)?))
1122 }
1123 }
1124 match map.next_value::<DeserializeWith>() {
1125 Ok(deserialize_with) => deserialize_with.0,
1126 Err(err) => {
1127 return Err(err);
1128 }
1129 }
1130 });
1131 }
1132 Field::Description => {
1133 if r#description_property.is_some() {
1134 return Err(<A::Error as de::Error>::duplicate_field(
1135 "description",
1136 ));
1137 }
1138 r#description_property = Some({
1139 struct DeserializeWith(Vec<DescriptionProperty>);
1140 impl<'de> Deserialize<'de> for DeserializeWith {
1141 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1142 where
1143 D: Deserializer<'de>,
1144 {
1145 Ok(DeserializeWith(serde_with::As::<
1146 serde_with::OneOrMany<serde_with::Same>,
1147 >::deserialize(deserializer)?))
1148 }
1149 }
1150 match map.next_value::<DeserializeWith>() {
1151 Ok(deserialize_with) => deserialize_with.0,
1152 Err(err) => {
1153 return Err(err);
1154 }
1155 }
1156 });
1157 }
1158 Field::DisambiguatingDescription => {
1159 if r#disambiguating_description_property.is_some() {
1160 return Err(<A::Error as de::Error>::duplicate_field(
1161 "disambiguatingDescription",
1162 ));
1163 }
1164 r#disambiguating_description_property = Some({
1165 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1166 impl<'de> Deserialize<'de> for DeserializeWith {
1167 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1168 where
1169 D: Deserializer<'de>,
1170 {
1171 Ok(DeserializeWith(serde_with::As::<
1172 serde_with::OneOrMany<serde_with::Same>,
1173 >::deserialize(deserializer)?))
1174 }
1175 }
1176 match map.next_value::<DeserializeWith>() {
1177 Ok(deserialize_with) => deserialize_with.0,
1178 Err(err) => {
1179 return Err(err);
1180 }
1181 }
1182 });
1183 }
1184 Field::Identifier => {
1185 if r#identifier_property.is_some() {
1186 return Err(<A::Error as de::Error>::duplicate_field(
1187 "identifier",
1188 ));
1189 }
1190 r#identifier_property = Some({
1191 struct DeserializeWith(Vec<IdentifierProperty>);
1192 impl<'de> Deserialize<'de> for DeserializeWith {
1193 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1194 where
1195 D: Deserializer<'de>,
1196 {
1197 Ok(DeserializeWith(serde_with::As::<
1198 serde_with::OneOrMany<serde_with::Same>,
1199 >::deserialize(deserializer)?))
1200 }
1201 }
1202 match map.next_value::<DeserializeWith>() {
1203 Ok(deserialize_with) => deserialize_with.0,
1204 Err(err) => {
1205 return Err(err);
1206 }
1207 }
1208 });
1209 }
1210 Field::Image => {
1211 if r#image_property.is_some() {
1212 return Err(<A::Error as de::Error>::duplicate_field("image"));
1213 }
1214 r#image_property = Some({
1215 struct DeserializeWith(Vec<ImageProperty>);
1216 impl<'de> Deserialize<'de> for DeserializeWith {
1217 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1218 where
1219 D: Deserializer<'de>,
1220 {
1221 Ok(DeserializeWith(serde_with::As::<
1222 serde_with::OneOrMany<serde_with::Same>,
1223 >::deserialize(deserializer)?))
1224 }
1225 }
1226 match map.next_value::<DeserializeWith>() {
1227 Ok(deserialize_with) => deserialize_with.0,
1228 Err(err) => {
1229 return Err(err);
1230 }
1231 }
1232 });
1233 }
1234 Field::MainEntityOfPage => {
1235 if r#main_entity_of_page_property.is_some() {
1236 return Err(<A::Error as de::Error>::duplicate_field(
1237 "mainEntityOfPage",
1238 ));
1239 }
1240 r#main_entity_of_page_property = Some({
1241 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1242 impl<'de> Deserialize<'de> for DeserializeWith {
1243 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1244 where
1245 D: Deserializer<'de>,
1246 {
1247 Ok(DeserializeWith(serde_with::As::<
1248 serde_with::OneOrMany<serde_with::Same>,
1249 >::deserialize(deserializer)?))
1250 }
1251 }
1252 match map.next_value::<DeserializeWith>() {
1253 Ok(deserialize_with) => deserialize_with.0,
1254 Err(err) => {
1255 return Err(err);
1256 }
1257 }
1258 });
1259 }
1260 Field::Name => {
1261 if r#name_property.is_some() {
1262 return Err(<A::Error as de::Error>::duplicate_field("name"));
1263 }
1264 r#name_property = Some({
1265 struct DeserializeWith(Vec<NameProperty>);
1266 impl<'de> Deserialize<'de> for DeserializeWith {
1267 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1268 where
1269 D: Deserializer<'de>,
1270 {
1271 Ok(DeserializeWith(serde_with::As::<
1272 serde_with::OneOrMany<serde_with::Same>,
1273 >::deserialize(deserializer)?))
1274 }
1275 }
1276 match map.next_value::<DeserializeWith>() {
1277 Ok(deserialize_with) => deserialize_with.0,
1278 Err(err) => {
1279 return Err(err);
1280 }
1281 }
1282 });
1283 }
1284 Field::PotentialAction => {
1285 if r#potential_action_property.is_some() {
1286 return Err(<A::Error as de::Error>::duplicate_field(
1287 "potentialAction",
1288 ));
1289 }
1290 r#potential_action_property = Some({
1291 struct DeserializeWith(Vec<PotentialActionProperty>);
1292 impl<'de> Deserialize<'de> for DeserializeWith {
1293 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1294 where
1295 D: Deserializer<'de>,
1296 {
1297 Ok(DeserializeWith(serde_with::As::<
1298 serde_with::OneOrMany<serde_with::Same>,
1299 >::deserialize(deserializer)?))
1300 }
1301 }
1302 match map.next_value::<DeserializeWith>() {
1303 Ok(deserialize_with) => deserialize_with.0,
1304 Err(err) => {
1305 return Err(err);
1306 }
1307 }
1308 });
1309 }
1310 Field::SameAs => {
1311 if r#same_as_property.is_some() {
1312 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1313 }
1314 r#same_as_property = Some({
1315 struct DeserializeWith(Vec<SameAsProperty>);
1316 impl<'de> Deserialize<'de> for DeserializeWith {
1317 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1318 where
1319 D: Deserializer<'de>,
1320 {
1321 Ok(DeserializeWith(serde_with::As::<
1322 serde_with::OneOrMany<serde_with::Same>,
1323 >::deserialize(deserializer)?))
1324 }
1325 }
1326 match map.next_value::<DeserializeWith>() {
1327 Ok(deserialize_with) => deserialize_with.0,
1328 Err(err) => {
1329 return Err(err);
1330 }
1331 }
1332 });
1333 }
1334 Field::SubjectOf => {
1335 if r#subject_of_property.is_some() {
1336 return Err(<A::Error as de::Error>::duplicate_field(
1337 "subjectOf",
1338 ));
1339 }
1340 r#subject_of_property = Some({
1341 struct DeserializeWith(Vec<SubjectOfProperty>);
1342 impl<'de> Deserialize<'de> for DeserializeWith {
1343 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1344 where
1345 D: Deserializer<'de>,
1346 {
1347 Ok(DeserializeWith(serde_with::As::<
1348 serde_with::OneOrMany<serde_with::Same>,
1349 >::deserialize(deserializer)?))
1350 }
1351 }
1352 match map.next_value::<DeserializeWith>() {
1353 Ok(deserialize_with) => deserialize_with.0,
1354 Err(err) => {
1355 return Err(err);
1356 }
1357 }
1358 });
1359 }
1360 Field::Url => {
1361 if r#url_property.is_some() {
1362 return Err(<A::Error as de::Error>::duplicate_field("url"));
1363 }
1364 r#url_property = Some({
1365 struct DeserializeWith(Vec<UrlProperty>);
1366 impl<'de> Deserialize<'de> for DeserializeWith {
1367 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1368 where
1369 D: Deserializer<'de>,
1370 {
1371 Ok(DeserializeWith(serde_with::As::<
1372 serde_with::OneOrMany<serde_with::Same>,
1373 >::deserialize(deserializer)?))
1374 }
1375 }
1376 match map.next_value::<DeserializeWith>() {
1377 Ok(deserialize_with) => deserialize_with.0,
1378 Err(err) => {
1379 return Err(err);
1380 }
1381 }
1382 });
1383 }
1384 Field::ArrivalTime => {
1385 if r#arrival_time_property.is_some() {
1386 return Err(<A::Error as de::Error>::duplicate_field(
1387 "arrivalTime",
1388 ));
1389 }
1390 r#arrival_time_property = Some({
1391 struct DeserializeWith(Vec<ArrivalTimeProperty>);
1392 impl<'de> Deserialize<'de> for DeserializeWith {
1393 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1394 where
1395 D: Deserializer<'de>,
1396 {
1397 Ok(DeserializeWith(serde_with::As::<
1398 serde_with::OneOrMany<serde_with::Same>,
1399 >::deserialize(deserializer)?))
1400 }
1401 }
1402 match map.next_value::<DeserializeWith>() {
1403 Ok(deserialize_with) => deserialize_with.0,
1404 Err(err) => {
1405 return Err(err);
1406 }
1407 }
1408 });
1409 }
1410 Field::DepartureTime => {
1411 if r#departure_time_property.is_some() {
1412 return Err(<A::Error as de::Error>::duplicate_field(
1413 "departureTime",
1414 ));
1415 }
1416 r#departure_time_property = Some({
1417 struct DeserializeWith(Vec<DepartureTimeProperty>);
1418 impl<'de> Deserialize<'de> for DeserializeWith {
1419 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1420 where
1421 D: Deserializer<'de>,
1422 {
1423 Ok(DeserializeWith(serde_with::As::<
1424 serde_with::OneOrMany<serde_with::Same>,
1425 >::deserialize(deserializer)?))
1426 }
1427 }
1428 match map.next_value::<DeserializeWith>() {
1429 Ok(deserialize_with) => deserialize_with.0,
1430 Err(err) => {
1431 return Err(err);
1432 }
1433 }
1434 });
1435 }
1436 Field::Itinerary => {
1437 if r#itinerary_property.is_some() {
1438 return Err(<A::Error as de::Error>::duplicate_field(
1439 "itinerary",
1440 ));
1441 }
1442 r#itinerary_property = Some({
1443 struct DeserializeWith(Vec<ItineraryProperty>);
1444 impl<'de> Deserialize<'de> for DeserializeWith {
1445 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1446 where
1447 D: Deserializer<'de>,
1448 {
1449 Ok(DeserializeWith(serde_with::As::<
1450 serde_with::OneOrMany<serde_with::Same>,
1451 >::deserialize(deserializer)?))
1452 }
1453 }
1454 match map.next_value::<DeserializeWith>() {
1455 Ok(deserialize_with) => deserialize_with.0,
1456 Err(err) => {
1457 return Err(err);
1458 }
1459 }
1460 });
1461 }
1462 Field::Offers => {
1463 if r#offers_property.is_some() {
1464 return Err(<A::Error as de::Error>::duplicate_field("offers"));
1465 }
1466 r#offers_property = Some({
1467 struct DeserializeWith(Vec<OffersProperty>);
1468 impl<'de> Deserialize<'de> for DeserializeWith {
1469 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1470 where
1471 D: Deserializer<'de>,
1472 {
1473 Ok(DeserializeWith(serde_with::As::<
1474 serde_with::OneOrMany<serde_with::Same>,
1475 >::deserialize(deserializer)?))
1476 }
1477 }
1478 match map.next_value::<DeserializeWith>() {
1479 Ok(deserialize_with) => deserialize_with.0,
1480 Err(err) => {
1481 return Err(err);
1482 }
1483 }
1484 });
1485 }
1486 Field::PartOfTrip => {
1487 if r#part_of_trip_property.is_some() {
1488 return Err(<A::Error as de::Error>::duplicate_field(
1489 "partOfTrip",
1490 ));
1491 }
1492 r#part_of_trip_property = Some({
1493 struct DeserializeWith(Vec<PartOfTripProperty>);
1494 impl<'de> Deserialize<'de> for DeserializeWith {
1495 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1496 where
1497 D: Deserializer<'de>,
1498 {
1499 Ok(DeserializeWith(serde_with::As::<
1500 serde_with::OneOrMany<serde_with::Same>,
1501 >::deserialize(deserializer)?))
1502 }
1503 }
1504 match map.next_value::<DeserializeWith>() {
1505 Ok(deserialize_with) => deserialize_with.0,
1506 Err(err) => {
1507 return Err(err);
1508 }
1509 }
1510 });
1511 }
1512 Field::Provider => {
1513 if r#provider_property.is_some() {
1514 return Err(<A::Error as de::Error>::duplicate_field(
1515 "provider",
1516 ));
1517 }
1518 r#provider_property = Some({
1519 struct DeserializeWith(Vec<ProviderProperty>);
1520 impl<'de> Deserialize<'de> for DeserializeWith {
1521 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1522 where
1523 D: Deserializer<'de>,
1524 {
1525 Ok(DeserializeWith(serde_with::As::<
1526 serde_with::OneOrMany<serde_with::Same>,
1527 >::deserialize(deserializer)?))
1528 }
1529 }
1530 match map.next_value::<DeserializeWith>() {
1531 Ok(deserialize_with) => deserialize_with.0,
1532 Err(err) => {
1533 return Err(err);
1534 }
1535 }
1536 });
1537 }
1538 Field::SubTrip => {
1539 if r#sub_trip_property.is_some() {
1540 return Err(<A::Error as de::Error>::duplicate_field(
1541 "subTrip",
1542 ));
1543 }
1544 r#sub_trip_property = Some({
1545 struct DeserializeWith(Vec<SubTripProperty>);
1546 impl<'de> Deserialize<'de> for DeserializeWith {
1547 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1548 where
1549 D: Deserializer<'de>,
1550 {
1551 Ok(DeserializeWith(serde_with::As::<
1552 serde_with::OneOrMany<serde_with::Same>,
1553 >::deserialize(deserializer)?))
1554 }
1555 }
1556 match map.next_value::<DeserializeWith>() {
1557 Ok(deserialize_with) => deserialize_with.0,
1558 Err(err) => {
1559 return Err(err);
1560 }
1561 }
1562 });
1563 }
1564 Field::TripOrigin => {
1565 if r#trip_origin_property.is_some() {
1566 return Err(<A::Error as de::Error>::duplicate_field(
1567 "tripOrigin",
1568 ));
1569 }
1570 r#trip_origin_property = Some({
1571 struct DeserializeWith(Vec<TripOriginProperty>);
1572 impl<'de> Deserialize<'de> for DeserializeWith {
1573 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1574 where
1575 D: Deserializer<'de>,
1576 {
1577 Ok(DeserializeWith(serde_with::As::<
1578 serde_with::OneOrMany<serde_with::Same>,
1579 >::deserialize(deserializer)?))
1580 }
1581 }
1582 match map.next_value::<DeserializeWith>() {
1583 Ok(deserialize_with) => deserialize_with.0,
1584 Err(err) => {
1585 return Err(err);
1586 }
1587 }
1588 });
1589 }
1590 Field::Ignore => {
1591 let _ = map.next_value::<de::IgnoredAny>()?;
1592 }
1593 }
1594 }
1595 Ok(TrainTrip {
1596 r#arrival_platform: r#arrival_platform_property.unwrap_or_default(),
1597 r#arrival_station: r#arrival_station_property.unwrap_or_default(),
1598 r#departure_platform: r#departure_platform_property.unwrap_or_default(),
1599 r#departure_station: r#departure_station_property.unwrap_or_default(),
1600 r#train_name: r#train_name_property.unwrap_or_default(),
1601 r#train_number: r#train_number_property.unwrap_or_default(),
1602 r#additional_type: r#additional_type_property.unwrap_or_default(),
1603 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1604 r#description: r#description_property.unwrap_or_default(),
1605 r#disambiguating_description: r#disambiguating_description_property
1606 .unwrap_or_default(),
1607 r#identifier: r#identifier_property.unwrap_or_default(),
1608 r#image: r#image_property.unwrap_or_default(),
1609 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1610 r#name: r#name_property.unwrap_or_default(),
1611 r#potential_action: r#potential_action_property.unwrap_or_default(),
1612 r#same_as: r#same_as_property.unwrap_or_default(),
1613 r#subject_of: r#subject_of_property.unwrap_or_default(),
1614 r#url: r#url_property.unwrap_or_default(),
1615 r#arrival_time: r#arrival_time_property.unwrap_or_default(),
1616 r#departure_time: r#departure_time_property.unwrap_or_default(),
1617 r#itinerary: r#itinerary_property.unwrap_or_default(),
1618 r#offers: r#offers_property.unwrap_or_default(),
1619 r#part_of_trip: r#part_of_trip_property.unwrap_or_default(),
1620 r#provider: r#provider_property.unwrap_or_default(),
1621 r#sub_trip: r#sub_trip_property.unwrap_or_default(),
1622 r#trip_origin: r#trip_origin_property.unwrap_or_default(),
1623 })
1624 }
1625 }
1626 const FIELDS: &[&str] = &[
1627 "arrivalPlatform",
1628 "arrivalStation",
1629 "departurePlatform",
1630 "departureStation",
1631 "trainName",
1632 "trainNumber",
1633 "additionalType",
1634 "alternateName",
1635 "description",
1636 "disambiguatingDescription",
1637 "identifier",
1638 "image",
1639 "mainEntityOfPage",
1640 "name",
1641 "potentialAction",
1642 "sameAs",
1643 "subjectOf",
1644 "url",
1645 "arrivalTime",
1646 "departureTime",
1647 "itinerary",
1648 "offers",
1649 "partOfTrip",
1650 "provider",
1651 "subTrip",
1652 "tripOrigin",
1653 ];
1654 deserializer.deserialize_struct("TrainTrip", FIELDS, ClassVisitor)
1655 }
1656 }
1657}