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