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