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