schema_org_types/schemas/classes/
broadcast_channel.rs

1use super::*;
2/// <https://schema.org/BroadcastChannel>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct BroadcastChannel {
6	/// <https://schema.org/broadcastChannelId>
7	pub r#broadcast_channel_id: Vec<BroadcastChannelIdProperty>,
8	/// <https://schema.org/broadcastFrequency>
9	pub r#broadcast_frequency: Vec<BroadcastFrequencyProperty>,
10	/// <https://schema.org/broadcastServiceTier>
11	pub r#broadcast_service_tier: Vec<BroadcastServiceTierProperty>,
12	/// <https://schema.org/genre>
13	pub r#genre: Vec<GenreProperty>,
14	/// <https://schema.org/inBroadcastLineup>
15	pub r#in_broadcast_lineup: Vec<InBroadcastLineupProperty>,
16	/// <https://schema.org/providesBroadcastService>
17	pub r#provides_broadcast_service: Vec<ProvidesBroadcastServiceProperty>,
18	/// <https://schema.org/additionalType>
19	pub r#additional_type: Vec<AdditionalTypeProperty>,
20	/// <https://schema.org/alternateName>
21	pub r#alternate_name: Vec<AlternateNameProperty>,
22	/// <https://schema.org/description>
23	pub r#description: Vec<DescriptionProperty>,
24	/// <https://schema.org/disambiguatingDescription>
25	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
26	/// <https://schema.org/identifier>
27	pub r#identifier: Vec<IdentifierProperty>,
28	/// <https://schema.org/image>
29	pub r#image: Vec<ImageProperty>,
30	/// <https://schema.org/mainEntityOfPage>
31	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
32	/// <https://schema.org/name>
33	pub r#name: Vec<NameProperty>,
34	/// <https://schema.org/potentialAction>
35	pub r#potential_action: Vec<PotentialActionProperty>,
36	/// <https://schema.org/sameAs>
37	pub r#same_as: Vec<SameAsProperty>,
38	/// <https://schema.org/subjectOf>
39	pub r#subject_of: Vec<SubjectOfProperty>,
40	/// <https://schema.org/url>
41	pub r#url: Vec<UrlProperty>,
42}
43/// This trait is for properties from <https://schema.org/BroadcastChannel>.
44pub trait BroadcastChannelTrait {
45	/// Get <https://schema.org/broadcastChannelId> from [`Self`] as borrowed slice.
46	fn get_broadcast_channel_id(&self) -> &[BroadcastChannelIdProperty];
47	/// Take <https://schema.org/broadcastChannelId> from [`Self`] as owned vector.
48	fn take_broadcast_channel_id(&mut self) -> Vec<BroadcastChannelIdProperty>;
49	/// Get <https://schema.org/broadcastFrequency> from [`Self`] as borrowed slice.
50	fn get_broadcast_frequency(&self) -> &[BroadcastFrequencyProperty];
51	/// Take <https://schema.org/broadcastFrequency> from [`Self`] as owned vector.
52	fn take_broadcast_frequency(&mut self) -> Vec<BroadcastFrequencyProperty>;
53	/// Get <https://schema.org/broadcastServiceTier> from [`Self`] as borrowed slice.
54	fn get_broadcast_service_tier(&self) -> &[BroadcastServiceTierProperty];
55	/// Take <https://schema.org/broadcastServiceTier> from [`Self`] as owned vector.
56	fn take_broadcast_service_tier(&mut self) -> Vec<BroadcastServiceTierProperty>;
57	/// Get <https://schema.org/genre> from [`Self`] as borrowed slice.
58	fn get_genre(&self) -> &[GenreProperty];
59	/// Take <https://schema.org/genre> from [`Self`] as owned vector.
60	fn take_genre(&mut self) -> Vec<GenreProperty>;
61	/// Get <https://schema.org/inBroadcastLineup> from [`Self`] as borrowed slice.
62	fn get_in_broadcast_lineup(&self) -> &[InBroadcastLineupProperty];
63	/// Take <https://schema.org/inBroadcastLineup> from [`Self`] as owned vector.
64	fn take_in_broadcast_lineup(&mut self) -> Vec<InBroadcastLineupProperty>;
65	/// Get <https://schema.org/providesBroadcastService> from [`Self`] as borrowed slice.
66	fn get_provides_broadcast_service(&self) -> &[ProvidesBroadcastServiceProperty];
67	/// Take <https://schema.org/providesBroadcastService> from [`Self`] as owned vector.
68	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}