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