schema_org_types/schemas/classes/
geo_coordinates.rs

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