1use super::*;
2#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct MerchantReturnPolicy {
6 pub r#additional_property: Vec<AdditionalPropertyProperty>,
8 pub r#applicable_country: Vec<ApplicableCountryProperty>,
10 pub r#customer_remorse_return_fees: Vec<CustomerRemorseReturnFeesProperty>,
12 pub r#customer_remorse_return_label_source: Vec<CustomerRemorseReturnLabelSourceProperty>,
14 pub r#customer_remorse_return_shipping_fees_amount:
16 Vec<CustomerRemorseReturnShippingFeesAmountProperty>,
17 pub r#in_store_returns_offered: Vec<InStoreReturnsOfferedProperty>,
19 pub r#item_condition: Vec<ItemConditionProperty>,
21 pub r#item_defect_return_fees: Vec<ItemDefectReturnFeesProperty>,
23 pub r#item_defect_return_label_source: Vec<ItemDefectReturnLabelSourceProperty>,
25 pub r#item_defect_return_shipping_fees_amount: Vec<ItemDefectReturnShippingFeesAmountProperty>,
27 pub r#merchant_return_days: Vec<MerchantReturnDaysProperty>,
29 pub r#merchant_return_link: Vec<MerchantReturnLinkProperty>,
31 pub r#refund_type: Vec<RefundTypeProperty>,
33 pub r#restocking_fee: Vec<RestockingFeeProperty>,
35 pub r#return_fees: Vec<ReturnFeesProperty>,
37 pub r#return_label_source: Vec<ReturnLabelSourceProperty>,
39 pub r#return_method: Vec<ReturnMethodProperty>,
41 pub r#return_policy_category: Vec<ReturnPolicyCategoryProperty>,
43 pub r#return_policy_country: Vec<ReturnPolicyCountryProperty>,
45 pub r#return_policy_seasonal_override: Vec<ReturnPolicySeasonalOverrideProperty>,
47 pub r#return_shipping_fees_amount: Vec<ReturnShippingFeesAmountProperty>,
49 pub r#additional_type: Vec<AdditionalTypeProperty>,
51 pub r#alternate_name: Vec<AlternateNameProperty>,
53 pub r#description: Vec<DescriptionProperty>,
55 pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
57 pub r#identifier: Vec<IdentifierProperty>,
59 pub r#image: Vec<ImageProperty>,
61 pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
63 pub r#name: Vec<NameProperty>,
65 pub r#potential_action: Vec<PotentialActionProperty>,
67 pub r#same_as: Vec<SameAsProperty>,
69 pub r#subject_of: Vec<SubjectOfProperty>,
71 pub r#url: Vec<UrlProperty>,
73}
74pub trait MerchantReturnPolicyTrait {
76 fn get_additional_property(&self) -> &[AdditionalPropertyProperty];
78 fn take_additional_property(&mut self) -> Vec<AdditionalPropertyProperty>;
80 fn get_applicable_country(&self) -> &[ApplicableCountryProperty];
82 fn take_applicable_country(&mut self) -> Vec<ApplicableCountryProperty>;
84 fn get_customer_remorse_return_fees(&self) -> &[CustomerRemorseReturnFeesProperty];
86 fn take_customer_remorse_return_fees(&mut self) -> Vec<CustomerRemorseReturnFeesProperty>;
88 fn get_customer_remorse_return_label_source(
90 &self,
91 ) -> &[CustomerRemorseReturnLabelSourceProperty];
92 fn take_customer_remorse_return_label_source(
94 &mut self,
95 ) -> Vec<CustomerRemorseReturnLabelSourceProperty>;
96 fn get_customer_remorse_return_shipping_fees_amount(
98 &self,
99 ) -> &[CustomerRemorseReturnShippingFeesAmountProperty];
100 fn take_customer_remorse_return_shipping_fees_amount(
102 &mut self,
103 ) -> Vec<CustomerRemorseReturnShippingFeesAmountProperty>;
104 fn get_in_store_returns_offered(&self) -> &[InStoreReturnsOfferedProperty];
106 fn take_in_store_returns_offered(&mut self) -> Vec<InStoreReturnsOfferedProperty>;
108 fn get_item_condition(&self) -> &[ItemConditionProperty];
110 fn take_item_condition(&mut self) -> Vec<ItemConditionProperty>;
112 fn get_item_defect_return_fees(&self) -> &[ItemDefectReturnFeesProperty];
114 fn take_item_defect_return_fees(&mut self) -> Vec<ItemDefectReturnFeesProperty>;
116 fn get_item_defect_return_label_source(&self) -> &[ItemDefectReturnLabelSourceProperty];
118 fn take_item_defect_return_label_source(&mut self) -> Vec<ItemDefectReturnLabelSourceProperty>;
120 fn get_item_defect_return_shipping_fees_amount(
122 &self,
123 ) -> &[ItemDefectReturnShippingFeesAmountProperty];
124 fn take_item_defect_return_shipping_fees_amount(
126 &mut self,
127 ) -> Vec<ItemDefectReturnShippingFeesAmountProperty>;
128 fn get_merchant_return_days(&self) -> &[MerchantReturnDaysProperty];
130 fn take_merchant_return_days(&mut self) -> Vec<MerchantReturnDaysProperty>;
132 fn get_merchant_return_link(&self) -> &[MerchantReturnLinkProperty];
134 fn take_merchant_return_link(&mut self) -> Vec<MerchantReturnLinkProperty>;
136 fn get_refund_type(&self) -> &[RefundTypeProperty];
138 fn take_refund_type(&mut self) -> Vec<RefundTypeProperty>;
140 fn get_restocking_fee(&self) -> &[RestockingFeeProperty];
142 fn take_restocking_fee(&mut self) -> Vec<RestockingFeeProperty>;
144 fn get_return_fees(&self) -> &[ReturnFeesProperty];
146 fn take_return_fees(&mut self) -> Vec<ReturnFeesProperty>;
148 fn get_return_label_source(&self) -> &[ReturnLabelSourceProperty];
150 fn take_return_label_source(&mut self) -> Vec<ReturnLabelSourceProperty>;
152 fn get_return_method(&self) -> &[ReturnMethodProperty];
154 fn take_return_method(&mut self) -> Vec<ReturnMethodProperty>;
156 fn get_return_policy_category(&self) -> &[ReturnPolicyCategoryProperty];
158 fn take_return_policy_category(&mut self) -> Vec<ReturnPolicyCategoryProperty>;
160 fn get_return_policy_country(&self) -> &[ReturnPolicyCountryProperty];
162 fn take_return_policy_country(&mut self) -> Vec<ReturnPolicyCountryProperty>;
164 fn get_return_policy_seasonal_override(&self) -> &[ReturnPolicySeasonalOverrideProperty];
166 fn take_return_policy_seasonal_override(&mut self)
168 -> Vec<ReturnPolicySeasonalOverrideProperty>;
169 fn get_return_shipping_fees_amount(&self) -> &[ReturnShippingFeesAmountProperty];
171 fn take_return_shipping_fees_amount(&mut self) -> Vec<ReturnShippingFeesAmountProperty>;
173}
174impl MerchantReturnPolicyTrait for MerchantReturnPolicy {
175 fn get_additional_property(&self) -> &[AdditionalPropertyProperty] {
176 self.r#additional_property.as_slice()
177 }
178 fn take_additional_property(&mut self) -> Vec<AdditionalPropertyProperty> {
179 std::mem::take(&mut self.r#additional_property)
180 }
181 fn get_applicable_country(&self) -> &[ApplicableCountryProperty] {
182 self.r#applicable_country.as_slice()
183 }
184 fn take_applicable_country(&mut self) -> Vec<ApplicableCountryProperty> {
185 std::mem::take(&mut self.r#applicable_country)
186 }
187 fn get_customer_remorse_return_fees(&self) -> &[CustomerRemorseReturnFeesProperty] {
188 self.r#customer_remorse_return_fees.as_slice()
189 }
190 fn take_customer_remorse_return_fees(&mut self) -> Vec<CustomerRemorseReturnFeesProperty> {
191 std::mem::take(&mut self.r#customer_remorse_return_fees)
192 }
193 fn get_customer_remorse_return_label_source(
194 &self,
195 ) -> &[CustomerRemorseReturnLabelSourceProperty] {
196 self.r#customer_remorse_return_label_source.as_slice()
197 }
198 fn take_customer_remorse_return_label_source(
199 &mut self,
200 ) -> Vec<CustomerRemorseReturnLabelSourceProperty> {
201 std::mem::take(&mut self.r#customer_remorse_return_label_source)
202 }
203 fn get_customer_remorse_return_shipping_fees_amount(
204 &self,
205 ) -> &[CustomerRemorseReturnShippingFeesAmountProperty] {
206 self.r#customer_remorse_return_shipping_fees_amount
207 .as_slice()
208 }
209 fn take_customer_remorse_return_shipping_fees_amount(
210 &mut self,
211 ) -> Vec<CustomerRemorseReturnShippingFeesAmountProperty> {
212 std::mem::take(&mut self.r#customer_remorse_return_shipping_fees_amount)
213 }
214 fn get_in_store_returns_offered(&self) -> &[InStoreReturnsOfferedProperty] {
215 self.r#in_store_returns_offered.as_slice()
216 }
217 fn take_in_store_returns_offered(&mut self) -> Vec<InStoreReturnsOfferedProperty> {
218 std::mem::take(&mut self.r#in_store_returns_offered)
219 }
220 fn get_item_condition(&self) -> &[ItemConditionProperty] {
221 self.r#item_condition.as_slice()
222 }
223 fn take_item_condition(&mut self) -> Vec<ItemConditionProperty> {
224 std::mem::take(&mut self.r#item_condition)
225 }
226 fn get_item_defect_return_fees(&self) -> &[ItemDefectReturnFeesProperty] {
227 self.r#item_defect_return_fees.as_slice()
228 }
229 fn take_item_defect_return_fees(&mut self) -> Vec<ItemDefectReturnFeesProperty> {
230 std::mem::take(&mut self.r#item_defect_return_fees)
231 }
232 fn get_item_defect_return_label_source(&self) -> &[ItemDefectReturnLabelSourceProperty] {
233 self.r#item_defect_return_label_source.as_slice()
234 }
235 fn take_item_defect_return_label_source(&mut self) -> Vec<ItemDefectReturnLabelSourceProperty> {
236 std::mem::take(&mut self.r#item_defect_return_label_source)
237 }
238 fn get_item_defect_return_shipping_fees_amount(
239 &self,
240 ) -> &[ItemDefectReturnShippingFeesAmountProperty] {
241 self.r#item_defect_return_shipping_fees_amount.as_slice()
242 }
243 fn take_item_defect_return_shipping_fees_amount(
244 &mut self,
245 ) -> Vec<ItemDefectReturnShippingFeesAmountProperty> {
246 std::mem::take(&mut self.r#item_defect_return_shipping_fees_amount)
247 }
248 fn get_merchant_return_days(&self) -> &[MerchantReturnDaysProperty] {
249 self.r#merchant_return_days.as_slice()
250 }
251 fn take_merchant_return_days(&mut self) -> Vec<MerchantReturnDaysProperty> {
252 std::mem::take(&mut self.r#merchant_return_days)
253 }
254 fn get_merchant_return_link(&self) -> &[MerchantReturnLinkProperty] {
255 self.r#merchant_return_link.as_slice()
256 }
257 fn take_merchant_return_link(&mut self) -> Vec<MerchantReturnLinkProperty> {
258 std::mem::take(&mut self.r#merchant_return_link)
259 }
260 fn get_refund_type(&self) -> &[RefundTypeProperty] {
261 self.r#refund_type.as_slice()
262 }
263 fn take_refund_type(&mut self) -> Vec<RefundTypeProperty> {
264 std::mem::take(&mut self.r#refund_type)
265 }
266 fn get_restocking_fee(&self) -> &[RestockingFeeProperty] {
267 self.r#restocking_fee.as_slice()
268 }
269 fn take_restocking_fee(&mut self) -> Vec<RestockingFeeProperty> {
270 std::mem::take(&mut self.r#restocking_fee)
271 }
272 fn get_return_fees(&self) -> &[ReturnFeesProperty] {
273 self.r#return_fees.as_slice()
274 }
275 fn take_return_fees(&mut self) -> Vec<ReturnFeesProperty> {
276 std::mem::take(&mut self.r#return_fees)
277 }
278 fn get_return_label_source(&self) -> &[ReturnLabelSourceProperty] {
279 self.r#return_label_source.as_slice()
280 }
281 fn take_return_label_source(&mut self) -> Vec<ReturnLabelSourceProperty> {
282 std::mem::take(&mut self.r#return_label_source)
283 }
284 fn get_return_method(&self) -> &[ReturnMethodProperty] {
285 self.r#return_method.as_slice()
286 }
287 fn take_return_method(&mut self) -> Vec<ReturnMethodProperty> {
288 std::mem::take(&mut self.r#return_method)
289 }
290 fn get_return_policy_category(&self) -> &[ReturnPolicyCategoryProperty] {
291 self.r#return_policy_category.as_slice()
292 }
293 fn take_return_policy_category(&mut self) -> Vec<ReturnPolicyCategoryProperty> {
294 std::mem::take(&mut self.r#return_policy_category)
295 }
296 fn get_return_policy_country(&self) -> &[ReturnPolicyCountryProperty] {
297 self.r#return_policy_country.as_slice()
298 }
299 fn take_return_policy_country(&mut self) -> Vec<ReturnPolicyCountryProperty> {
300 std::mem::take(&mut self.r#return_policy_country)
301 }
302 fn get_return_policy_seasonal_override(&self) -> &[ReturnPolicySeasonalOverrideProperty] {
303 self.r#return_policy_seasonal_override.as_slice()
304 }
305 fn take_return_policy_seasonal_override(
306 &mut self,
307 ) -> Vec<ReturnPolicySeasonalOverrideProperty> {
308 std::mem::take(&mut self.r#return_policy_seasonal_override)
309 }
310 fn get_return_shipping_fees_amount(&self) -> &[ReturnShippingFeesAmountProperty] {
311 self.r#return_shipping_fees_amount.as_slice()
312 }
313 fn take_return_shipping_fees_amount(&mut self) -> Vec<ReturnShippingFeesAmountProperty> {
314 std::mem::take(&mut self.r#return_shipping_fees_amount)
315 }
316}
317impl ThingTrait for MerchantReturnPolicy {
318 fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
319 self.r#additional_type.as_slice()
320 }
321 fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
322 std::mem::take(&mut self.r#additional_type)
323 }
324 fn get_alternate_name(&self) -> &[AlternateNameProperty] {
325 self.r#alternate_name.as_slice()
326 }
327 fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
328 std::mem::take(&mut self.r#alternate_name)
329 }
330 fn get_description(&self) -> &[DescriptionProperty] {
331 self.r#description.as_slice()
332 }
333 fn take_description(&mut self) -> Vec<DescriptionProperty> {
334 std::mem::take(&mut self.r#description)
335 }
336 fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
337 self.r#disambiguating_description.as_slice()
338 }
339 fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
340 std::mem::take(&mut self.r#disambiguating_description)
341 }
342 fn get_identifier(&self) -> &[IdentifierProperty] {
343 self.r#identifier.as_slice()
344 }
345 fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
346 std::mem::take(&mut self.r#identifier)
347 }
348 fn get_image(&self) -> &[ImageProperty] {
349 self.r#image.as_slice()
350 }
351 fn take_image(&mut self) -> Vec<ImageProperty> {
352 std::mem::take(&mut self.r#image)
353 }
354 fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
355 self.r#main_entity_of_page.as_slice()
356 }
357 fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
358 std::mem::take(&mut self.r#main_entity_of_page)
359 }
360 fn get_name(&self) -> &[NameProperty] {
361 self.r#name.as_slice()
362 }
363 fn take_name(&mut self) -> Vec<NameProperty> {
364 std::mem::take(&mut self.r#name)
365 }
366 fn get_potential_action(&self) -> &[PotentialActionProperty] {
367 self.r#potential_action.as_slice()
368 }
369 fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
370 std::mem::take(&mut self.r#potential_action)
371 }
372 fn get_same_as(&self) -> &[SameAsProperty] {
373 self.r#same_as.as_slice()
374 }
375 fn take_same_as(&mut self) -> Vec<SameAsProperty> {
376 std::mem::take(&mut self.r#same_as)
377 }
378 fn get_subject_of(&self) -> &[SubjectOfProperty] {
379 self.r#subject_of.as_slice()
380 }
381 fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
382 std::mem::take(&mut self.r#subject_of)
383 }
384 fn get_url(&self) -> &[UrlProperty] {
385 self.r#url.as_slice()
386 }
387 fn take_url(&mut self) -> Vec<UrlProperty> {
388 std::mem::take(&mut self.r#url)
389 }
390}
391#[cfg(feature = "serde")]
392mod serde {
393 use std::{fmt, fmt::Formatter};
394
395 use ::serde::{
396 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
397 };
398
399 use super::*;
400 impl Serialize for MerchantReturnPolicy {
401 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
402 where
403 S: Serializer,
404 {
405 let len: usize = [
406 !Vec::is_empty(&self.r#additional_property) as usize,
407 !Vec::is_empty(&self.r#applicable_country) as usize,
408 !Vec::is_empty(&self.r#customer_remorse_return_fees) as usize,
409 !Vec::is_empty(&self.r#customer_remorse_return_label_source) as usize,
410 !Vec::is_empty(&self.r#customer_remorse_return_shipping_fees_amount) as usize,
411 !Vec::is_empty(&self.r#in_store_returns_offered) as usize,
412 !Vec::is_empty(&self.r#item_condition) as usize,
413 !Vec::is_empty(&self.r#item_defect_return_fees) as usize,
414 !Vec::is_empty(&self.r#item_defect_return_label_source) as usize,
415 !Vec::is_empty(&self.r#item_defect_return_shipping_fees_amount) as usize,
416 !Vec::is_empty(&self.r#merchant_return_days) as usize,
417 !Vec::is_empty(&self.r#merchant_return_link) as usize,
418 !Vec::is_empty(&self.r#refund_type) as usize,
419 !Vec::is_empty(&self.r#restocking_fee) as usize,
420 !Vec::is_empty(&self.r#return_fees) as usize,
421 !Vec::is_empty(&self.r#return_label_source) as usize,
422 !Vec::is_empty(&self.r#return_method) as usize,
423 !Vec::is_empty(&self.r#return_policy_category) as usize,
424 !Vec::is_empty(&self.r#return_policy_country) as usize,
425 !Vec::is_empty(&self.r#return_policy_seasonal_override) as usize,
426 !Vec::is_empty(&self.r#return_shipping_fees_amount) as usize,
427 !Vec::is_empty(&self.r#additional_type) as usize,
428 !Vec::is_empty(&self.r#alternate_name) as usize,
429 !Vec::is_empty(&self.r#description) as usize,
430 !Vec::is_empty(&self.r#disambiguating_description) as usize,
431 !Vec::is_empty(&self.r#identifier) as usize,
432 !Vec::is_empty(&self.r#image) as usize,
433 !Vec::is_empty(&self.r#main_entity_of_page) as usize,
434 !Vec::is_empty(&self.r#name) as usize,
435 !Vec::is_empty(&self.r#potential_action) as usize,
436 !Vec::is_empty(&self.r#same_as) as usize,
437 !Vec::is_empty(&self.r#subject_of) as usize,
438 !Vec::is_empty(&self.r#url) as usize,
439 ]
440 .iter()
441 .sum();
442 let mut serialize_struct =
443 Serializer::serialize_struct(serializer, "MerchantReturnPolicy", len)?;
444 if !Vec::is_empty(&self.r#additional_property) {
445 serialize_struct.serialize_field("additionalProperty", {
446 struct SerializeWith<'a>(&'a Vec<AdditionalPropertyProperty>);
447 impl<'a> Serialize for SerializeWith<'a> {
448 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
449 where
450 S: Serializer,
451 {
452 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
453 self.0, serializer,
454 )
455 }
456 }
457 &SerializeWith(&self.r#additional_property)
458 })?;
459 } else {
460 serialize_struct.skip_field("additionalProperty")?;
461 }
462 if !Vec::is_empty(&self.r#applicable_country) {
463 serialize_struct.serialize_field("applicableCountry", {
464 struct SerializeWith<'a>(&'a Vec<ApplicableCountryProperty>);
465 impl<'a> Serialize for SerializeWith<'a> {
466 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
467 where
468 S: Serializer,
469 {
470 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
471 self.0, serializer,
472 )
473 }
474 }
475 &SerializeWith(&self.r#applicable_country)
476 })?;
477 } else {
478 serialize_struct.skip_field("applicableCountry")?;
479 }
480 if !Vec::is_empty(&self.r#customer_remorse_return_fees) {
481 serialize_struct.serialize_field("customerRemorseReturnFees", {
482 struct SerializeWith<'a>(&'a Vec<CustomerRemorseReturnFeesProperty>);
483 impl<'a> Serialize for SerializeWith<'a> {
484 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
485 where
486 S: Serializer,
487 {
488 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
489 self.0, serializer,
490 )
491 }
492 }
493 &SerializeWith(&self.r#customer_remorse_return_fees)
494 })?;
495 } else {
496 serialize_struct.skip_field("customerRemorseReturnFees")?;
497 }
498 if !Vec::is_empty(&self.r#customer_remorse_return_label_source) {
499 serialize_struct.serialize_field("customerRemorseReturnLabelSource", {
500 struct SerializeWith<'a>(&'a Vec<CustomerRemorseReturnLabelSourceProperty>);
501 impl<'a> Serialize for SerializeWith<'a> {
502 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
503 where
504 S: Serializer,
505 {
506 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
507 self.0, serializer,
508 )
509 }
510 }
511 &SerializeWith(&self.r#customer_remorse_return_label_source)
512 })?;
513 } else {
514 serialize_struct.skip_field("customerRemorseReturnLabelSource")?;
515 }
516 if !Vec::is_empty(&self.r#customer_remorse_return_shipping_fees_amount) {
517 serialize_struct.serialize_field("customerRemorseReturnShippingFeesAmount", {
518 struct SerializeWith<'a>(
519 &'a Vec<CustomerRemorseReturnShippingFeesAmountProperty>,
520 );
521 impl<'a> Serialize for SerializeWith<'a> {
522 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
523 where
524 S: Serializer,
525 {
526 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
527 self.0, serializer,
528 )
529 }
530 }
531 &SerializeWith(&self.r#customer_remorse_return_shipping_fees_amount)
532 })?;
533 } else {
534 serialize_struct.skip_field("customerRemorseReturnShippingFeesAmount")?;
535 }
536 if !Vec::is_empty(&self.r#in_store_returns_offered) {
537 serialize_struct.serialize_field("inStoreReturnsOffered", {
538 struct SerializeWith<'a>(&'a Vec<InStoreReturnsOfferedProperty>);
539 impl<'a> Serialize for SerializeWith<'a> {
540 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
541 where
542 S: Serializer,
543 {
544 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
545 self.0, serializer,
546 )
547 }
548 }
549 &SerializeWith(&self.r#in_store_returns_offered)
550 })?;
551 } else {
552 serialize_struct.skip_field("inStoreReturnsOffered")?;
553 }
554 if !Vec::is_empty(&self.r#item_condition) {
555 serialize_struct.serialize_field("itemCondition", {
556 struct SerializeWith<'a>(&'a Vec<ItemConditionProperty>);
557 impl<'a> Serialize for SerializeWith<'a> {
558 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
559 where
560 S: Serializer,
561 {
562 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
563 self.0, serializer,
564 )
565 }
566 }
567 &SerializeWith(&self.r#item_condition)
568 })?;
569 } else {
570 serialize_struct.skip_field("itemCondition")?;
571 }
572 if !Vec::is_empty(&self.r#item_defect_return_fees) {
573 serialize_struct.serialize_field("itemDefectReturnFees", {
574 struct SerializeWith<'a>(&'a Vec<ItemDefectReturnFeesProperty>);
575 impl<'a> Serialize for SerializeWith<'a> {
576 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
577 where
578 S: Serializer,
579 {
580 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
581 self.0, serializer,
582 )
583 }
584 }
585 &SerializeWith(&self.r#item_defect_return_fees)
586 })?;
587 } else {
588 serialize_struct.skip_field("itemDefectReturnFees")?;
589 }
590 if !Vec::is_empty(&self.r#item_defect_return_label_source) {
591 serialize_struct.serialize_field("itemDefectReturnLabelSource", {
592 struct SerializeWith<'a>(&'a Vec<ItemDefectReturnLabelSourceProperty>);
593 impl<'a> Serialize for SerializeWith<'a> {
594 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
595 where
596 S: Serializer,
597 {
598 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
599 self.0, serializer,
600 )
601 }
602 }
603 &SerializeWith(&self.r#item_defect_return_label_source)
604 })?;
605 } else {
606 serialize_struct.skip_field("itemDefectReturnLabelSource")?;
607 }
608 if !Vec::is_empty(&self.r#item_defect_return_shipping_fees_amount) {
609 serialize_struct.serialize_field("itemDefectReturnShippingFeesAmount", {
610 struct SerializeWith<'a>(&'a Vec<ItemDefectReturnShippingFeesAmountProperty>);
611 impl<'a> Serialize for SerializeWith<'a> {
612 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
613 where
614 S: Serializer,
615 {
616 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
617 self.0, serializer,
618 )
619 }
620 }
621 &SerializeWith(&self.r#item_defect_return_shipping_fees_amount)
622 })?;
623 } else {
624 serialize_struct.skip_field("itemDefectReturnShippingFeesAmount")?;
625 }
626 if !Vec::is_empty(&self.r#merchant_return_days) {
627 serialize_struct.serialize_field("merchantReturnDays", {
628 struct SerializeWith<'a>(&'a Vec<MerchantReturnDaysProperty>);
629 impl<'a> Serialize for SerializeWith<'a> {
630 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
631 where
632 S: Serializer,
633 {
634 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
635 self.0, serializer,
636 )
637 }
638 }
639 &SerializeWith(&self.r#merchant_return_days)
640 })?;
641 } else {
642 serialize_struct.skip_field("merchantReturnDays")?;
643 }
644 if !Vec::is_empty(&self.r#merchant_return_link) {
645 serialize_struct.serialize_field("merchantReturnLink", {
646 struct SerializeWith<'a>(&'a Vec<MerchantReturnLinkProperty>);
647 impl<'a> Serialize for SerializeWith<'a> {
648 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
649 where
650 S: Serializer,
651 {
652 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
653 self.0, serializer,
654 )
655 }
656 }
657 &SerializeWith(&self.r#merchant_return_link)
658 })?;
659 } else {
660 serialize_struct.skip_field("merchantReturnLink")?;
661 }
662 if !Vec::is_empty(&self.r#refund_type) {
663 serialize_struct.serialize_field("refundType", {
664 struct SerializeWith<'a>(&'a Vec<RefundTypeProperty>);
665 impl<'a> Serialize for SerializeWith<'a> {
666 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
667 where
668 S: Serializer,
669 {
670 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
671 self.0, serializer,
672 )
673 }
674 }
675 &SerializeWith(&self.r#refund_type)
676 })?;
677 } else {
678 serialize_struct.skip_field("refundType")?;
679 }
680 if !Vec::is_empty(&self.r#restocking_fee) {
681 serialize_struct.serialize_field("restockingFee", {
682 struct SerializeWith<'a>(&'a Vec<RestockingFeeProperty>);
683 impl<'a> Serialize for SerializeWith<'a> {
684 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
685 where
686 S: Serializer,
687 {
688 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
689 self.0, serializer,
690 )
691 }
692 }
693 &SerializeWith(&self.r#restocking_fee)
694 })?;
695 } else {
696 serialize_struct.skip_field("restockingFee")?;
697 }
698 if !Vec::is_empty(&self.r#return_fees) {
699 serialize_struct.serialize_field("returnFees", {
700 struct SerializeWith<'a>(&'a Vec<ReturnFeesProperty>);
701 impl<'a> Serialize for SerializeWith<'a> {
702 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
703 where
704 S: Serializer,
705 {
706 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
707 self.0, serializer,
708 )
709 }
710 }
711 &SerializeWith(&self.r#return_fees)
712 })?;
713 } else {
714 serialize_struct.skip_field("returnFees")?;
715 }
716 if !Vec::is_empty(&self.r#return_label_source) {
717 serialize_struct.serialize_field("returnLabelSource", {
718 struct SerializeWith<'a>(&'a Vec<ReturnLabelSourceProperty>);
719 impl<'a> Serialize for SerializeWith<'a> {
720 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
721 where
722 S: Serializer,
723 {
724 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
725 self.0, serializer,
726 )
727 }
728 }
729 &SerializeWith(&self.r#return_label_source)
730 })?;
731 } else {
732 serialize_struct.skip_field("returnLabelSource")?;
733 }
734 if !Vec::is_empty(&self.r#return_method) {
735 serialize_struct.serialize_field("returnMethod", {
736 struct SerializeWith<'a>(&'a Vec<ReturnMethodProperty>);
737 impl<'a> Serialize for SerializeWith<'a> {
738 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
739 where
740 S: Serializer,
741 {
742 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
743 self.0, serializer,
744 )
745 }
746 }
747 &SerializeWith(&self.r#return_method)
748 })?;
749 } else {
750 serialize_struct.skip_field("returnMethod")?;
751 }
752 if !Vec::is_empty(&self.r#return_policy_category) {
753 serialize_struct.serialize_field("returnPolicyCategory", {
754 struct SerializeWith<'a>(&'a Vec<ReturnPolicyCategoryProperty>);
755 impl<'a> Serialize for SerializeWith<'a> {
756 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
757 where
758 S: Serializer,
759 {
760 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
761 self.0, serializer,
762 )
763 }
764 }
765 &SerializeWith(&self.r#return_policy_category)
766 })?;
767 } else {
768 serialize_struct.skip_field("returnPolicyCategory")?;
769 }
770 if !Vec::is_empty(&self.r#return_policy_country) {
771 serialize_struct.serialize_field("returnPolicyCountry", {
772 struct SerializeWith<'a>(&'a Vec<ReturnPolicyCountryProperty>);
773 impl<'a> Serialize for SerializeWith<'a> {
774 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
775 where
776 S: Serializer,
777 {
778 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
779 self.0, serializer,
780 )
781 }
782 }
783 &SerializeWith(&self.r#return_policy_country)
784 })?;
785 } else {
786 serialize_struct.skip_field("returnPolicyCountry")?;
787 }
788 if !Vec::is_empty(&self.r#return_policy_seasonal_override) {
789 serialize_struct.serialize_field("returnPolicySeasonalOverride", {
790 struct SerializeWith<'a>(&'a Vec<ReturnPolicySeasonalOverrideProperty>);
791 impl<'a> Serialize for SerializeWith<'a> {
792 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
793 where
794 S: Serializer,
795 {
796 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
797 self.0, serializer,
798 )
799 }
800 }
801 &SerializeWith(&self.r#return_policy_seasonal_override)
802 })?;
803 } else {
804 serialize_struct.skip_field("returnPolicySeasonalOverride")?;
805 }
806 if !Vec::is_empty(&self.r#return_shipping_fees_amount) {
807 serialize_struct.serialize_field("returnShippingFeesAmount", {
808 struct SerializeWith<'a>(&'a Vec<ReturnShippingFeesAmountProperty>);
809 impl<'a> Serialize for SerializeWith<'a> {
810 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
811 where
812 S: Serializer,
813 {
814 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
815 self.0, serializer,
816 )
817 }
818 }
819 &SerializeWith(&self.r#return_shipping_fees_amount)
820 })?;
821 } else {
822 serialize_struct.skip_field("returnShippingFeesAmount")?;
823 }
824 if !Vec::is_empty(&self.r#additional_type) {
825 serialize_struct.serialize_field("additionalType", {
826 struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
827 impl<'a> Serialize for SerializeWith<'a> {
828 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
829 where
830 S: Serializer,
831 {
832 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
833 self.0, serializer,
834 )
835 }
836 }
837 &SerializeWith(&self.r#additional_type)
838 })?;
839 } else {
840 serialize_struct.skip_field("additionalType")?;
841 }
842 if !Vec::is_empty(&self.r#alternate_name) {
843 serialize_struct.serialize_field("alternateName", {
844 struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
845 impl<'a> Serialize for SerializeWith<'a> {
846 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
847 where
848 S: Serializer,
849 {
850 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
851 self.0, serializer,
852 )
853 }
854 }
855 &SerializeWith(&self.r#alternate_name)
856 })?;
857 } else {
858 serialize_struct.skip_field("alternateName")?;
859 }
860 if !Vec::is_empty(&self.r#description) {
861 serialize_struct.serialize_field("description", {
862 struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
863 impl<'a> Serialize for SerializeWith<'a> {
864 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
865 where
866 S: Serializer,
867 {
868 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
869 self.0, serializer,
870 )
871 }
872 }
873 &SerializeWith(&self.r#description)
874 })?;
875 } else {
876 serialize_struct.skip_field("description")?;
877 }
878 if !Vec::is_empty(&self.r#disambiguating_description) {
879 serialize_struct.serialize_field("disambiguatingDescription", {
880 struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
881 impl<'a> Serialize for SerializeWith<'a> {
882 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
883 where
884 S: Serializer,
885 {
886 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
887 self.0, serializer,
888 )
889 }
890 }
891 &SerializeWith(&self.r#disambiguating_description)
892 })?;
893 } else {
894 serialize_struct.skip_field("disambiguatingDescription")?;
895 }
896 if !Vec::is_empty(&self.r#identifier) {
897 serialize_struct.serialize_field("identifier", {
898 struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
899 impl<'a> Serialize for SerializeWith<'a> {
900 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
901 where
902 S: Serializer,
903 {
904 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
905 self.0, serializer,
906 )
907 }
908 }
909 &SerializeWith(&self.r#identifier)
910 })?;
911 } else {
912 serialize_struct.skip_field("identifier")?;
913 }
914 if !Vec::is_empty(&self.r#image) {
915 serialize_struct.serialize_field("image", {
916 struct SerializeWith<'a>(&'a Vec<ImageProperty>);
917 impl<'a> Serialize for SerializeWith<'a> {
918 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
919 where
920 S: Serializer,
921 {
922 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
923 self.0, serializer,
924 )
925 }
926 }
927 &SerializeWith(&self.r#image)
928 })?;
929 } else {
930 serialize_struct.skip_field("image")?;
931 }
932 if !Vec::is_empty(&self.r#main_entity_of_page) {
933 serialize_struct.serialize_field("mainEntityOfPage", {
934 struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
935 impl<'a> Serialize for SerializeWith<'a> {
936 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
937 where
938 S: Serializer,
939 {
940 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
941 self.0, serializer,
942 )
943 }
944 }
945 &SerializeWith(&self.r#main_entity_of_page)
946 })?;
947 } else {
948 serialize_struct.skip_field("mainEntityOfPage")?;
949 }
950 if !Vec::is_empty(&self.r#name) {
951 serialize_struct.serialize_field("name", {
952 struct SerializeWith<'a>(&'a Vec<NameProperty>);
953 impl<'a> Serialize for SerializeWith<'a> {
954 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
955 where
956 S: Serializer,
957 {
958 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
959 self.0, serializer,
960 )
961 }
962 }
963 &SerializeWith(&self.r#name)
964 })?;
965 } else {
966 serialize_struct.skip_field("name")?;
967 }
968 if !Vec::is_empty(&self.r#potential_action) {
969 serialize_struct.serialize_field("potentialAction", {
970 struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
971 impl<'a> Serialize for SerializeWith<'a> {
972 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
973 where
974 S: Serializer,
975 {
976 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
977 self.0, serializer,
978 )
979 }
980 }
981 &SerializeWith(&self.r#potential_action)
982 })?;
983 } else {
984 serialize_struct.skip_field("potentialAction")?;
985 }
986 if !Vec::is_empty(&self.r#same_as) {
987 serialize_struct.serialize_field("sameAs", {
988 struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
989 impl<'a> Serialize for SerializeWith<'a> {
990 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
991 where
992 S: Serializer,
993 {
994 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
995 self.0, serializer,
996 )
997 }
998 }
999 &SerializeWith(&self.r#same_as)
1000 })?;
1001 } else {
1002 serialize_struct.skip_field("sameAs")?;
1003 }
1004 if !Vec::is_empty(&self.r#subject_of) {
1005 serialize_struct.serialize_field("subjectOf", {
1006 struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
1007 impl<'a> Serialize for SerializeWith<'a> {
1008 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1009 where
1010 S: Serializer,
1011 {
1012 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1013 self.0, serializer,
1014 )
1015 }
1016 }
1017 &SerializeWith(&self.r#subject_of)
1018 })?;
1019 } else {
1020 serialize_struct.skip_field("subjectOf")?;
1021 }
1022 if !Vec::is_empty(&self.r#url) {
1023 serialize_struct.serialize_field("url", {
1024 struct SerializeWith<'a>(&'a Vec<UrlProperty>);
1025 impl<'a> Serialize for SerializeWith<'a> {
1026 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1027 where
1028 S: Serializer,
1029 {
1030 serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1031 self.0, serializer,
1032 )
1033 }
1034 }
1035 &SerializeWith(&self.r#url)
1036 })?;
1037 } else {
1038 serialize_struct.skip_field("url")?;
1039 }
1040 serialize_struct.end()
1041 }
1042 }
1043 impl<'de> Deserialize<'de> for MerchantReturnPolicy {
1044 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1045 where
1046 D: Deserializer<'de>,
1047 {
1048 enum Field {
1049 AdditionalProperty,
1050 ApplicableCountry,
1051 CustomerRemorseReturnFees,
1052 CustomerRemorseReturnLabelSource,
1053 CustomerRemorseReturnShippingFeesAmount,
1054 InStoreReturnsOffered,
1055 ItemCondition,
1056 ItemDefectReturnFees,
1057 ItemDefectReturnLabelSource,
1058 ItemDefectReturnShippingFeesAmount,
1059 MerchantReturnDays,
1060 MerchantReturnLink,
1061 RefundType,
1062 RestockingFee,
1063 ReturnFees,
1064 ReturnLabelSource,
1065 ReturnMethod,
1066 ReturnPolicyCategory,
1067 ReturnPolicyCountry,
1068 ReturnPolicySeasonalOverride,
1069 ReturnShippingFeesAmount,
1070 AdditionalType,
1071 AlternateName,
1072 Description,
1073 DisambiguatingDescription,
1074 Identifier,
1075 Image,
1076 MainEntityOfPage,
1077 Name,
1078 PotentialAction,
1079 SameAs,
1080 SubjectOf,
1081 Url,
1082 Ignore,
1083 }
1084 struct FieldVisitor;
1085 impl<'de> Visitor<'de> for FieldVisitor {
1086 type Value = Field;
1087 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1088 formatter.write_str("field identifier")
1089 }
1090 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
1091 where
1092 E: de::Error,
1093 {
1094 match value {
1095 "additionalProperty" => Ok(Field::AdditionalProperty),
1096 "applicableCountry" => Ok(Field::ApplicableCountry),
1097 "customerRemorseReturnFees" => Ok(Field::CustomerRemorseReturnFees),
1098 "customerRemorseReturnLabelSource" => {
1099 Ok(Field::CustomerRemorseReturnLabelSource)
1100 }
1101 "customerRemorseReturnShippingFeesAmount" => {
1102 Ok(Field::CustomerRemorseReturnShippingFeesAmount)
1103 }
1104 "inStoreReturnsOffered" => Ok(Field::InStoreReturnsOffered),
1105 "itemCondition" => Ok(Field::ItemCondition),
1106 "itemDefectReturnFees" => Ok(Field::ItemDefectReturnFees),
1107 "itemDefectReturnLabelSource" => Ok(Field::ItemDefectReturnLabelSource),
1108 "itemDefectReturnShippingFeesAmount" => {
1109 Ok(Field::ItemDefectReturnShippingFeesAmount)
1110 }
1111 "merchantReturnDays" => Ok(Field::MerchantReturnDays),
1112 "merchantReturnLink" => Ok(Field::MerchantReturnLink),
1113 "refundType" => Ok(Field::RefundType),
1114 "restockingFee" => Ok(Field::RestockingFee),
1115 "returnFees" => Ok(Field::ReturnFees),
1116 "returnLabelSource" => Ok(Field::ReturnLabelSource),
1117 "returnMethod" => Ok(Field::ReturnMethod),
1118 "returnPolicyCategory" => Ok(Field::ReturnPolicyCategory),
1119 "returnPolicyCountry" => Ok(Field::ReturnPolicyCountry),
1120 "returnPolicySeasonalOverride" => Ok(Field::ReturnPolicySeasonalOverride),
1121 "returnShippingFeesAmount" => Ok(Field::ReturnShippingFeesAmount),
1122 "additionalType" => Ok(Field::AdditionalType),
1123 "alternateName" => Ok(Field::AlternateName),
1124 "description" => Ok(Field::Description),
1125 "disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1126 "identifier" => Ok(Field::Identifier),
1127 "image" => Ok(Field::Image),
1128 "mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1129 "name" => Ok(Field::Name),
1130 "potentialAction" => Ok(Field::PotentialAction),
1131 "sameAs" => Ok(Field::SameAs),
1132 "subjectOf" => Ok(Field::SubjectOf),
1133 "url" => Ok(Field::Url),
1134 "id" | "type" => Ok(Field::Ignore),
1135 _ => Err(de::Error::unknown_field(value, FIELDS)),
1136 }
1137 }
1138 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
1139 where
1140 E: de::Error,
1141 {
1142 match value {
1143 b"additionalProperty" => Ok(Field::AdditionalProperty),
1144 b"applicableCountry" => Ok(Field::ApplicableCountry),
1145 b"customerRemorseReturnFees" => Ok(Field::CustomerRemorseReturnFees),
1146 b"customerRemorseReturnLabelSource" => {
1147 Ok(Field::CustomerRemorseReturnLabelSource)
1148 }
1149 b"customerRemorseReturnShippingFeesAmount" => {
1150 Ok(Field::CustomerRemorseReturnShippingFeesAmount)
1151 }
1152 b"inStoreReturnsOffered" => Ok(Field::InStoreReturnsOffered),
1153 b"itemCondition" => Ok(Field::ItemCondition),
1154 b"itemDefectReturnFees" => Ok(Field::ItemDefectReturnFees),
1155 b"itemDefectReturnLabelSource" => Ok(Field::ItemDefectReturnLabelSource),
1156 b"itemDefectReturnShippingFeesAmount" => {
1157 Ok(Field::ItemDefectReturnShippingFeesAmount)
1158 }
1159 b"merchantReturnDays" => Ok(Field::MerchantReturnDays),
1160 b"merchantReturnLink" => Ok(Field::MerchantReturnLink),
1161 b"refundType" => Ok(Field::RefundType),
1162 b"restockingFee" => Ok(Field::RestockingFee),
1163 b"returnFees" => Ok(Field::ReturnFees),
1164 b"returnLabelSource" => Ok(Field::ReturnLabelSource),
1165 b"returnMethod" => Ok(Field::ReturnMethod),
1166 b"returnPolicyCategory" => Ok(Field::ReturnPolicyCategory),
1167 b"returnPolicyCountry" => Ok(Field::ReturnPolicyCountry),
1168 b"returnPolicySeasonalOverride" => Ok(Field::ReturnPolicySeasonalOverride),
1169 b"returnShippingFeesAmount" => Ok(Field::ReturnShippingFeesAmount),
1170 b"additionalType" => Ok(Field::AdditionalType),
1171 b"alternateName" => Ok(Field::AlternateName),
1172 b"description" => Ok(Field::Description),
1173 b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1174 b"identifier" => Ok(Field::Identifier),
1175 b"image" => Ok(Field::Image),
1176 b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1177 b"name" => Ok(Field::Name),
1178 b"potentialAction" => Ok(Field::PotentialAction),
1179 b"sameAs" => Ok(Field::SameAs),
1180 b"subjectOf" => Ok(Field::SubjectOf),
1181 b"url" => Ok(Field::Url),
1182 b"id" | b"type" => Ok(Field::Ignore),
1183 _ => {
1184 let value = &String::from_utf8_lossy(value);
1185 Err(de::Error::unknown_field(value, FIELDS))
1186 }
1187 }
1188 }
1189 }
1190 impl<'de> Deserialize<'de> for Field {
1191 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1192 where
1193 D: Deserializer<'de>,
1194 {
1195 deserializer.deserialize_identifier(FieldVisitor)
1196 }
1197 }
1198 struct ClassVisitor;
1199 impl<'de> Visitor<'de> for ClassVisitor {
1200 type Value = MerchantReturnPolicy;
1201 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1202 formatter.write_str("schema.org schema MerchantReturnPolicy")
1203 }
1204 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
1205 where
1206 A: de::MapAccess<'de>,
1207 {
1208 let mut r#additional_property_property = None;
1209 let mut r#applicable_country_property = None;
1210 let mut r#customer_remorse_return_fees_property = None;
1211 let mut r#customer_remorse_return_label_source_property = None;
1212 let mut r#customer_remorse_return_shipping_fees_amount_property = None;
1213 let mut r#in_store_returns_offered_property = None;
1214 let mut r#item_condition_property = None;
1215 let mut r#item_defect_return_fees_property = None;
1216 let mut r#item_defect_return_label_source_property = None;
1217 let mut r#item_defect_return_shipping_fees_amount_property = None;
1218 let mut r#merchant_return_days_property = None;
1219 let mut r#merchant_return_link_property = None;
1220 let mut r#refund_type_property = None;
1221 let mut r#restocking_fee_property = None;
1222 let mut r#return_fees_property = None;
1223 let mut r#return_label_source_property = None;
1224 let mut r#return_method_property = None;
1225 let mut r#return_policy_category_property = None;
1226 let mut r#return_policy_country_property = None;
1227 let mut r#return_policy_seasonal_override_property = None;
1228 let mut r#return_shipping_fees_amount_property = None;
1229 let mut r#additional_type_property = None;
1230 let mut r#alternate_name_property = None;
1231 let mut r#description_property = None;
1232 let mut r#disambiguating_description_property = None;
1233 let mut r#identifier_property = None;
1234 let mut r#image_property = None;
1235 let mut r#main_entity_of_page_property = None;
1236 let mut r#name_property = None;
1237 let mut r#potential_action_property = None;
1238 let mut r#same_as_property = None;
1239 let mut r#subject_of_property = None;
1240 let mut r#url_property = None;
1241 while let Some(key) = map.next_key::<Field>()? {
1242 match key {
1243 Field::AdditionalProperty => {
1244 if r#additional_property_property.is_some() {
1245 return Err(<A::Error as de::Error>::duplicate_field(
1246 "additionalProperty",
1247 ));
1248 }
1249 r#additional_property_property = Some({
1250 struct DeserializeWith(Vec<AdditionalPropertyProperty>);
1251 impl<'de> Deserialize<'de> for DeserializeWith {
1252 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1253 where
1254 D: Deserializer<'de>,
1255 {
1256 Ok(DeserializeWith(serde_with::As::<
1257 serde_with::OneOrMany<serde_with::Same>,
1258 >::deserialize(deserializer)?))
1259 }
1260 }
1261 match map.next_value::<DeserializeWith>() {
1262 Ok(deserialize_with) => deserialize_with.0,
1263 Err(err) => {
1264 return Err(err);
1265 }
1266 }
1267 });
1268 }
1269 Field::ApplicableCountry => {
1270 if r#applicable_country_property.is_some() {
1271 return Err(<A::Error as de::Error>::duplicate_field(
1272 "applicableCountry",
1273 ));
1274 }
1275 r#applicable_country_property = Some({
1276 struct DeserializeWith(Vec<ApplicableCountryProperty>);
1277 impl<'de> Deserialize<'de> for DeserializeWith {
1278 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1279 where
1280 D: Deserializer<'de>,
1281 {
1282 Ok(DeserializeWith(serde_with::As::<
1283 serde_with::OneOrMany<serde_with::Same>,
1284 >::deserialize(deserializer)?))
1285 }
1286 }
1287 match map.next_value::<DeserializeWith>() {
1288 Ok(deserialize_with) => deserialize_with.0,
1289 Err(err) => {
1290 return Err(err);
1291 }
1292 }
1293 });
1294 }
1295 Field::CustomerRemorseReturnFees => {
1296 if r#customer_remorse_return_fees_property.is_some() {
1297 return Err(<A::Error as de::Error>::duplicate_field(
1298 "customerRemorseReturnFees",
1299 ));
1300 }
1301 r#customer_remorse_return_fees_property = Some({
1302 struct DeserializeWith(Vec<CustomerRemorseReturnFeesProperty>);
1303 impl<'de> Deserialize<'de> for DeserializeWith {
1304 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1305 where
1306 D: Deserializer<'de>,
1307 {
1308 Ok(DeserializeWith(serde_with::As::<
1309 serde_with::OneOrMany<serde_with::Same>,
1310 >::deserialize(deserializer)?))
1311 }
1312 }
1313 match map.next_value::<DeserializeWith>() {
1314 Ok(deserialize_with) => deserialize_with.0,
1315 Err(err) => {
1316 return Err(err);
1317 }
1318 }
1319 });
1320 }
1321 Field::CustomerRemorseReturnLabelSource => {
1322 if r#customer_remorse_return_label_source_property.is_some() {
1323 return Err(<A::Error as de::Error>::duplicate_field(
1324 "customerRemorseReturnLabelSource",
1325 ));
1326 }
1327 r#customer_remorse_return_label_source_property = Some({
1328 struct DeserializeWith(
1329 Vec<CustomerRemorseReturnLabelSourceProperty>,
1330 );
1331 impl<'de> Deserialize<'de> for DeserializeWith {
1332 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1333 where
1334 D: Deserializer<'de>,
1335 {
1336 Ok(DeserializeWith(serde_with::As::<
1337 serde_with::OneOrMany<serde_with::Same>,
1338 >::deserialize(deserializer)?))
1339 }
1340 }
1341 match map.next_value::<DeserializeWith>() {
1342 Ok(deserialize_with) => deserialize_with.0,
1343 Err(err) => {
1344 return Err(err);
1345 }
1346 }
1347 });
1348 }
1349 Field::CustomerRemorseReturnShippingFeesAmount => {
1350 if r#customer_remorse_return_shipping_fees_amount_property.is_some()
1351 {
1352 return Err(<A::Error as de::Error>::duplicate_field(
1353 "customerRemorseReturnShippingFeesAmount",
1354 ));
1355 }
1356 r#customer_remorse_return_shipping_fees_amount_property = Some({
1357 struct DeserializeWith(
1358 Vec<CustomerRemorseReturnShippingFeesAmountProperty>,
1359 );
1360 impl<'de> Deserialize<'de> for DeserializeWith {
1361 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1362 where
1363 D: Deserializer<'de>,
1364 {
1365 Ok(DeserializeWith(serde_with::As::<
1366 serde_with::OneOrMany<serde_with::Same>,
1367 >::deserialize(deserializer)?))
1368 }
1369 }
1370 match map.next_value::<DeserializeWith>() {
1371 Ok(deserialize_with) => deserialize_with.0,
1372 Err(err) => {
1373 return Err(err);
1374 }
1375 }
1376 });
1377 }
1378 Field::InStoreReturnsOffered => {
1379 if r#in_store_returns_offered_property.is_some() {
1380 return Err(<A::Error as de::Error>::duplicate_field(
1381 "inStoreReturnsOffered",
1382 ));
1383 }
1384 r#in_store_returns_offered_property = Some({
1385 struct DeserializeWith(Vec<InStoreReturnsOfferedProperty>);
1386 impl<'de> Deserialize<'de> for DeserializeWith {
1387 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1388 where
1389 D: Deserializer<'de>,
1390 {
1391 Ok(DeserializeWith(serde_with::As::<
1392 serde_with::OneOrMany<serde_with::Same>,
1393 >::deserialize(deserializer)?))
1394 }
1395 }
1396 match map.next_value::<DeserializeWith>() {
1397 Ok(deserialize_with) => deserialize_with.0,
1398 Err(err) => {
1399 return Err(err);
1400 }
1401 }
1402 });
1403 }
1404 Field::ItemCondition => {
1405 if r#item_condition_property.is_some() {
1406 return Err(<A::Error as de::Error>::duplicate_field(
1407 "itemCondition",
1408 ));
1409 }
1410 r#item_condition_property = Some({
1411 struct DeserializeWith(Vec<ItemConditionProperty>);
1412 impl<'de> Deserialize<'de> for DeserializeWith {
1413 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1414 where
1415 D: Deserializer<'de>,
1416 {
1417 Ok(DeserializeWith(serde_with::As::<
1418 serde_with::OneOrMany<serde_with::Same>,
1419 >::deserialize(deserializer)?))
1420 }
1421 }
1422 match map.next_value::<DeserializeWith>() {
1423 Ok(deserialize_with) => deserialize_with.0,
1424 Err(err) => {
1425 return Err(err);
1426 }
1427 }
1428 });
1429 }
1430 Field::ItemDefectReturnFees => {
1431 if r#item_defect_return_fees_property.is_some() {
1432 return Err(<A::Error as de::Error>::duplicate_field(
1433 "itemDefectReturnFees",
1434 ));
1435 }
1436 r#item_defect_return_fees_property = Some({
1437 struct DeserializeWith(Vec<ItemDefectReturnFeesProperty>);
1438 impl<'de> Deserialize<'de> for DeserializeWith {
1439 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1440 where
1441 D: Deserializer<'de>,
1442 {
1443 Ok(DeserializeWith(serde_with::As::<
1444 serde_with::OneOrMany<serde_with::Same>,
1445 >::deserialize(deserializer)?))
1446 }
1447 }
1448 match map.next_value::<DeserializeWith>() {
1449 Ok(deserialize_with) => deserialize_with.0,
1450 Err(err) => {
1451 return Err(err);
1452 }
1453 }
1454 });
1455 }
1456 Field::ItemDefectReturnLabelSource => {
1457 if r#item_defect_return_label_source_property.is_some() {
1458 return Err(<A::Error as de::Error>::duplicate_field(
1459 "itemDefectReturnLabelSource",
1460 ));
1461 }
1462 r#item_defect_return_label_source_property = Some({
1463 struct DeserializeWith(
1464 Vec<ItemDefectReturnLabelSourceProperty>,
1465 );
1466 impl<'de> Deserialize<'de> for DeserializeWith {
1467 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1468 where
1469 D: Deserializer<'de>,
1470 {
1471 Ok(DeserializeWith(serde_with::As::<
1472 serde_with::OneOrMany<serde_with::Same>,
1473 >::deserialize(deserializer)?))
1474 }
1475 }
1476 match map.next_value::<DeserializeWith>() {
1477 Ok(deserialize_with) => deserialize_with.0,
1478 Err(err) => {
1479 return Err(err);
1480 }
1481 }
1482 });
1483 }
1484 Field::ItemDefectReturnShippingFeesAmount => {
1485 if r#item_defect_return_shipping_fees_amount_property.is_some() {
1486 return Err(<A::Error as de::Error>::duplicate_field(
1487 "itemDefectReturnShippingFeesAmount",
1488 ));
1489 }
1490 r#item_defect_return_shipping_fees_amount_property = Some({
1491 struct DeserializeWith(
1492 Vec<ItemDefectReturnShippingFeesAmountProperty>,
1493 );
1494 impl<'de> Deserialize<'de> for DeserializeWith {
1495 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1496 where
1497 D: Deserializer<'de>,
1498 {
1499 Ok(DeserializeWith(serde_with::As::<
1500 serde_with::OneOrMany<serde_with::Same>,
1501 >::deserialize(deserializer)?))
1502 }
1503 }
1504 match map.next_value::<DeserializeWith>() {
1505 Ok(deserialize_with) => deserialize_with.0,
1506 Err(err) => {
1507 return Err(err);
1508 }
1509 }
1510 });
1511 }
1512 Field::MerchantReturnDays => {
1513 if r#merchant_return_days_property.is_some() {
1514 return Err(<A::Error as de::Error>::duplicate_field(
1515 "merchantReturnDays",
1516 ));
1517 }
1518 r#merchant_return_days_property = Some({
1519 struct DeserializeWith(Vec<MerchantReturnDaysProperty>);
1520 impl<'de> Deserialize<'de> for DeserializeWith {
1521 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1522 where
1523 D: Deserializer<'de>,
1524 {
1525 Ok(DeserializeWith(serde_with::As::<
1526 serde_with::OneOrMany<serde_with::Same>,
1527 >::deserialize(deserializer)?))
1528 }
1529 }
1530 match map.next_value::<DeserializeWith>() {
1531 Ok(deserialize_with) => deserialize_with.0,
1532 Err(err) => {
1533 return Err(err);
1534 }
1535 }
1536 });
1537 }
1538 Field::MerchantReturnLink => {
1539 if r#merchant_return_link_property.is_some() {
1540 return Err(<A::Error as de::Error>::duplicate_field(
1541 "merchantReturnLink",
1542 ));
1543 }
1544 r#merchant_return_link_property = Some({
1545 struct DeserializeWith(Vec<MerchantReturnLinkProperty>);
1546 impl<'de> Deserialize<'de> for DeserializeWith {
1547 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1548 where
1549 D: Deserializer<'de>,
1550 {
1551 Ok(DeserializeWith(serde_with::As::<
1552 serde_with::OneOrMany<serde_with::Same>,
1553 >::deserialize(deserializer)?))
1554 }
1555 }
1556 match map.next_value::<DeserializeWith>() {
1557 Ok(deserialize_with) => deserialize_with.0,
1558 Err(err) => {
1559 return Err(err);
1560 }
1561 }
1562 });
1563 }
1564 Field::RefundType => {
1565 if r#refund_type_property.is_some() {
1566 return Err(<A::Error as de::Error>::duplicate_field(
1567 "refundType",
1568 ));
1569 }
1570 r#refund_type_property = Some({
1571 struct DeserializeWith(Vec<RefundTypeProperty>);
1572 impl<'de> Deserialize<'de> for DeserializeWith {
1573 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1574 where
1575 D: Deserializer<'de>,
1576 {
1577 Ok(DeserializeWith(serde_with::As::<
1578 serde_with::OneOrMany<serde_with::Same>,
1579 >::deserialize(deserializer)?))
1580 }
1581 }
1582 match map.next_value::<DeserializeWith>() {
1583 Ok(deserialize_with) => deserialize_with.0,
1584 Err(err) => {
1585 return Err(err);
1586 }
1587 }
1588 });
1589 }
1590 Field::RestockingFee => {
1591 if r#restocking_fee_property.is_some() {
1592 return Err(<A::Error as de::Error>::duplicate_field(
1593 "restockingFee",
1594 ));
1595 }
1596 r#restocking_fee_property = Some({
1597 struct DeserializeWith(Vec<RestockingFeeProperty>);
1598 impl<'de> Deserialize<'de> for DeserializeWith {
1599 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1600 where
1601 D: Deserializer<'de>,
1602 {
1603 Ok(DeserializeWith(serde_with::As::<
1604 serde_with::OneOrMany<serde_with::Same>,
1605 >::deserialize(deserializer)?))
1606 }
1607 }
1608 match map.next_value::<DeserializeWith>() {
1609 Ok(deserialize_with) => deserialize_with.0,
1610 Err(err) => {
1611 return Err(err);
1612 }
1613 }
1614 });
1615 }
1616 Field::ReturnFees => {
1617 if r#return_fees_property.is_some() {
1618 return Err(<A::Error as de::Error>::duplicate_field(
1619 "returnFees",
1620 ));
1621 }
1622 r#return_fees_property = Some({
1623 struct DeserializeWith(Vec<ReturnFeesProperty>);
1624 impl<'de> Deserialize<'de> for DeserializeWith {
1625 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1626 where
1627 D: Deserializer<'de>,
1628 {
1629 Ok(DeserializeWith(serde_with::As::<
1630 serde_with::OneOrMany<serde_with::Same>,
1631 >::deserialize(deserializer)?))
1632 }
1633 }
1634 match map.next_value::<DeserializeWith>() {
1635 Ok(deserialize_with) => deserialize_with.0,
1636 Err(err) => {
1637 return Err(err);
1638 }
1639 }
1640 });
1641 }
1642 Field::ReturnLabelSource => {
1643 if r#return_label_source_property.is_some() {
1644 return Err(<A::Error as de::Error>::duplicate_field(
1645 "returnLabelSource",
1646 ));
1647 }
1648 r#return_label_source_property = Some({
1649 struct DeserializeWith(Vec<ReturnLabelSourceProperty>);
1650 impl<'de> Deserialize<'de> for DeserializeWith {
1651 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1652 where
1653 D: Deserializer<'de>,
1654 {
1655 Ok(DeserializeWith(serde_with::As::<
1656 serde_with::OneOrMany<serde_with::Same>,
1657 >::deserialize(deserializer)?))
1658 }
1659 }
1660 match map.next_value::<DeserializeWith>() {
1661 Ok(deserialize_with) => deserialize_with.0,
1662 Err(err) => {
1663 return Err(err);
1664 }
1665 }
1666 });
1667 }
1668 Field::ReturnMethod => {
1669 if r#return_method_property.is_some() {
1670 return Err(<A::Error as de::Error>::duplicate_field(
1671 "returnMethod",
1672 ));
1673 }
1674 r#return_method_property = Some({
1675 struct DeserializeWith(Vec<ReturnMethodProperty>);
1676 impl<'de> Deserialize<'de> for DeserializeWith {
1677 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1678 where
1679 D: Deserializer<'de>,
1680 {
1681 Ok(DeserializeWith(serde_with::As::<
1682 serde_with::OneOrMany<serde_with::Same>,
1683 >::deserialize(deserializer)?))
1684 }
1685 }
1686 match map.next_value::<DeserializeWith>() {
1687 Ok(deserialize_with) => deserialize_with.0,
1688 Err(err) => {
1689 return Err(err);
1690 }
1691 }
1692 });
1693 }
1694 Field::ReturnPolicyCategory => {
1695 if r#return_policy_category_property.is_some() {
1696 return Err(<A::Error as de::Error>::duplicate_field(
1697 "returnPolicyCategory",
1698 ));
1699 }
1700 r#return_policy_category_property = Some({
1701 struct DeserializeWith(Vec<ReturnPolicyCategoryProperty>);
1702 impl<'de> Deserialize<'de> for DeserializeWith {
1703 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1704 where
1705 D: Deserializer<'de>,
1706 {
1707 Ok(DeserializeWith(serde_with::As::<
1708 serde_with::OneOrMany<serde_with::Same>,
1709 >::deserialize(deserializer)?))
1710 }
1711 }
1712 match map.next_value::<DeserializeWith>() {
1713 Ok(deserialize_with) => deserialize_with.0,
1714 Err(err) => {
1715 return Err(err);
1716 }
1717 }
1718 });
1719 }
1720 Field::ReturnPolicyCountry => {
1721 if r#return_policy_country_property.is_some() {
1722 return Err(<A::Error as de::Error>::duplicate_field(
1723 "returnPolicyCountry",
1724 ));
1725 }
1726 r#return_policy_country_property = Some({
1727 struct DeserializeWith(Vec<ReturnPolicyCountryProperty>);
1728 impl<'de> Deserialize<'de> for DeserializeWith {
1729 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1730 where
1731 D: Deserializer<'de>,
1732 {
1733 Ok(DeserializeWith(serde_with::As::<
1734 serde_with::OneOrMany<serde_with::Same>,
1735 >::deserialize(deserializer)?))
1736 }
1737 }
1738 match map.next_value::<DeserializeWith>() {
1739 Ok(deserialize_with) => deserialize_with.0,
1740 Err(err) => {
1741 return Err(err);
1742 }
1743 }
1744 });
1745 }
1746 Field::ReturnPolicySeasonalOverride => {
1747 if r#return_policy_seasonal_override_property.is_some() {
1748 return Err(<A::Error as de::Error>::duplicate_field(
1749 "returnPolicySeasonalOverride",
1750 ));
1751 }
1752 r#return_policy_seasonal_override_property = Some({
1753 struct DeserializeWith(
1754 Vec<ReturnPolicySeasonalOverrideProperty>,
1755 );
1756 impl<'de> Deserialize<'de> for DeserializeWith {
1757 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1758 where
1759 D: Deserializer<'de>,
1760 {
1761 Ok(DeserializeWith(serde_with::As::<
1762 serde_with::OneOrMany<serde_with::Same>,
1763 >::deserialize(deserializer)?))
1764 }
1765 }
1766 match map.next_value::<DeserializeWith>() {
1767 Ok(deserialize_with) => deserialize_with.0,
1768 Err(err) => {
1769 return Err(err);
1770 }
1771 }
1772 });
1773 }
1774 Field::ReturnShippingFeesAmount => {
1775 if r#return_shipping_fees_amount_property.is_some() {
1776 return Err(<A::Error as de::Error>::duplicate_field(
1777 "returnShippingFeesAmount",
1778 ));
1779 }
1780 r#return_shipping_fees_amount_property = Some({
1781 struct DeserializeWith(Vec<ReturnShippingFeesAmountProperty>);
1782 impl<'de> Deserialize<'de> for DeserializeWith {
1783 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1784 where
1785 D: Deserializer<'de>,
1786 {
1787 Ok(DeserializeWith(serde_with::As::<
1788 serde_with::OneOrMany<serde_with::Same>,
1789 >::deserialize(deserializer)?))
1790 }
1791 }
1792 match map.next_value::<DeserializeWith>() {
1793 Ok(deserialize_with) => deserialize_with.0,
1794 Err(err) => {
1795 return Err(err);
1796 }
1797 }
1798 });
1799 }
1800 Field::AdditionalType => {
1801 if r#additional_type_property.is_some() {
1802 return Err(<A::Error as de::Error>::duplicate_field(
1803 "additionalType",
1804 ));
1805 }
1806 r#additional_type_property = Some({
1807 struct DeserializeWith(Vec<AdditionalTypeProperty>);
1808 impl<'de> Deserialize<'de> for DeserializeWith {
1809 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1810 where
1811 D: Deserializer<'de>,
1812 {
1813 Ok(DeserializeWith(serde_with::As::<
1814 serde_with::OneOrMany<serde_with::Same>,
1815 >::deserialize(deserializer)?))
1816 }
1817 }
1818 match map.next_value::<DeserializeWith>() {
1819 Ok(deserialize_with) => deserialize_with.0,
1820 Err(err) => {
1821 return Err(err);
1822 }
1823 }
1824 });
1825 }
1826 Field::AlternateName => {
1827 if r#alternate_name_property.is_some() {
1828 return Err(<A::Error as de::Error>::duplicate_field(
1829 "alternateName",
1830 ));
1831 }
1832 r#alternate_name_property = Some({
1833 struct DeserializeWith(Vec<AlternateNameProperty>);
1834 impl<'de> Deserialize<'de> for DeserializeWith {
1835 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1836 where
1837 D: Deserializer<'de>,
1838 {
1839 Ok(DeserializeWith(serde_with::As::<
1840 serde_with::OneOrMany<serde_with::Same>,
1841 >::deserialize(deserializer)?))
1842 }
1843 }
1844 match map.next_value::<DeserializeWith>() {
1845 Ok(deserialize_with) => deserialize_with.0,
1846 Err(err) => {
1847 return Err(err);
1848 }
1849 }
1850 });
1851 }
1852 Field::Description => {
1853 if r#description_property.is_some() {
1854 return Err(<A::Error as de::Error>::duplicate_field(
1855 "description",
1856 ));
1857 }
1858 r#description_property = Some({
1859 struct DeserializeWith(Vec<DescriptionProperty>);
1860 impl<'de> Deserialize<'de> for DeserializeWith {
1861 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1862 where
1863 D: Deserializer<'de>,
1864 {
1865 Ok(DeserializeWith(serde_with::As::<
1866 serde_with::OneOrMany<serde_with::Same>,
1867 >::deserialize(deserializer)?))
1868 }
1869 }
1870 match map.next_value::<DeserializeWith>() {
1871 Ok(deserialize_with) => deserialize_with.0,
1872 Err(err) => {
1873 return Err(err);
1874 }
1875 }
1876 });
1877 }
1878 Field::DisambiguatingDescription => {
1879 if r#disambiguating_description_property.is_some() {
1880 return Err(<A::Error as de::Error>::duplicate_field(
1881 "disambiguatingDescription",
1882 ));
1883 }
1884 r#disambiguating_description_property = Some({
1885 struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1886 impl<'de> Deserialize<'de> for DeserializeWith {
1887 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1888 where
1889 D: Deserializer<'de>,
1890 {
1891 Ok(DeserializeWith(serde_with::As::<
1892 serde_with::OneOrMany<serde_with::Same>,
1893 >::deserialize(deserializer)?))
1894 }
1895 }
1896 match map.next_value::<DeserializeWith>() {
1897 Ok(deserialize_with) => deserialize_with.0,
1898 Err(err) => {
1899 return Err(err);
1900 }
1901 }
1902 });
1903 }
1904 Field::Identifier => {
1905 if r#identifier_property.is_some() {
1906 return Err(<A::Error as de::Error>::duplicate_field(
1907 "identifier",
1908 ));
1909 }
1910 r#identifier_property = Some({
1911 struct DeserializeWith(Vec<IdentifierProperty>);
1912 impl<'de> Deserialize<'de> for DeserializeWith {
1913 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1914 where
1915 D: Deserializer<'de>,
1916 {
1917 Ok(DeserializeWith(serde_with::As::<
1918 serde_with::OneOrMany<serde_with::Same>,
1919 >::deserialize(deserializer)?))
1920 }
1921 }
1922 match map.next_value::<DeserializeWith>() {
1923 Ok(deserialize_with) => deserialize_with.0,
1924 Err(err) => {
1925 return Err(err);
1926 }
1927 }
1928 });
1929 }
1930 Field::Image => {
1931 if r#image_property.is_some() {
1932 return Err(<A::Error as de::Error>::duplicate_field("image"));
1933 }
1934 r#image_property = Some({
1935 struct DeserializeWith(Vec<ImageProperty>);
1936 impl<'de> Deserialize<'de> for DeserializeWith {
1937 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1938 where
1939 D: Deserializer<'de>,
1940 {
1941 Ok(DeserializeWith(serde_with::As::<
1942 serde_with::OneOrMany<serde_with::Same>,
1943 >::deserialize(deserializer)?))
1944 }
1945 }
1946 match map.next_value::<DeserializeWith>() {
1947 Ok(deserialize_with) => deserialize_with.0,
1948 Err(err) => {
1949 return Err(err);
1950 }
1951 }
1952 });
1953 }
1954 Field::MainEntityOfPage => {
1955 if r#main_entity_of_page_property.is_some() {
1956 return Err(<A::Error as de::Error>::duplicate_field(
1957 "mainEntityOfPage",
1958 ));
1959 }
1960 r#main_entity_of_page_property = Some({
1961 struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1962 impl<'de> Deserialize<'de> for DeserializeWith {
1963 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1964 where
1965 D: Deserializer<'de>,
1966 {
1967 Ok(DeserializeWith(serde_with::As::<
1968 serde_with::OneOrMany<serde_with::Same>,
1969 >::deserialize(deserializer)?))
1970 }
1971 }
1972 match map.next_value::<DeserializeWith>() {
1973 Ok(deserialize_with) => deserialize_with.0,
1974 Err(err) => {
1975 return Err(err);
1976 }
1977 }
1978 });
1979 }
1980 Field::Name => {
1981 if r#name_property.is_some() {
1982 return Err(<A::Error as de::Error>::duplicate_field("name"));
1983 }
1984 r#name_property = Some({
1985 struct DeserializeWith(Vec<NameProperty>);
1986 impl<'de> Deserialize<'de> for DeserializeWith {
1987 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1988 where
1989 D: Deserializer<'de>,
1990 {
1991 Ok(DeserializeWith(serde_with::As::<
1992 serde_with::OneOrMany<serde_with::Same>,
1993 >::deserialize(deserializer)?))
1994 }
1995 }
1996 match map.next_value::<DeserializeWith>() {
1997 Ok(deserialize_with) => deserialize_with.0,
1998 Err(err) => {
1999 return Err(err);
2000 }
2001 }
2002 });
2003 }
2004 Field::PotentialAction => {
2005 if r#potential_action_property.is_some() {
2006 return Err(<A::Error as de::Error>::duplicate_field(
2007 "potentialAction",
2008 ));
2009 }
2010 r#potential_action_property = Some({
2011 struct DeserializeWith(Vec<PotentialActionProperty>);
2012 impl<'de> Deserialize<'de> for DeserializeWith {
2013 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2014 where
2015 D: Deserializer<'de>,
2016 {
2017 Ok(DeserializeWith(serde_with::As::<
2018 serde_with::OneOrMany<serde_with::Same>,
2019 >::deserialize(deserializer)?))
2020 }
2021 }
2022 match map.next_value::<DeserializeWith>() {
2023 Ok(deserialize_with) => deserialize_with.0,
2024 Err(err) => {
2025 return Err(err);
2026 }
2027 }
2028 });
2029 }
2030 Field::SameAs => {
2031 if r#same_as_property.is_some() {
2032 return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
2033 }
2034 r#same_as_property = Some({
2035 struct DeserializeWith(Vec<SameAsProperty>);
2036 impl<'de> Deserialize<'de> for DeserializeWith {
2037 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2038 where
2039 D: Deserializer<'de>,
2040 {
2041 Ok(DeserializeWith(serde_with::As::<
2042 serde_with::OneOrMany<serde_with::Same>,
2043 >::deserialize(deserializer)?))
2044 }
2045 }
2046 match map.next_value::<DeserializeWith>() {
2047 Ok(deserialize_with) => deserialize_with.0,
2048 Err(err) => {
2049 return Err(err);
2050 }
2051 }
2052 });
2053 }
2054 Field::SubjectOf => {
2055 if r#subject_of_property.is_some() {
2056 return Err(<A::Error as de::Error>::duplicate_field(
2057 "subjectOf",
2058 ));
2059 }
2060 r#subject_of_property = Some({
2061 struct DeserializeWith(Vec<SubjectOfProperty>);
2062 impl<'de> Deserialize<'de> for DeserializeWith {
2063 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2064 where
2065 D: Deserializer<'de>,
2066 {
2067 Ok(DeserializeWith(serde_with::As::<
2068 serde_with::OneOrMany<serde_with::Same>,
2069 >::deserialize(deserializer)?))
2070 }
2071 }
2072 match map.next_value::<DeserializeWith>() {
2073 Ok(deserialize_with) => deserialize_with.0,
2074 Err(err) => {
2075 return Err(err);
2076 }
2077 }
2078 });
2079 }
2080 Field::Url => {
2081 if r#url_property.is_some() {
2082 return Err(<A::Error as de::Error>::duplicate_field("url"));
2083 }
2084 r#url_property = Some({
2085 struct DeserializeWith(Vec<UrlProperty>);
2086 impl<'de> Deserialize<'de> for DeserializeWith {
2087 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2088 where
2089 D: Deserializer<'de>,
2090 {
2091 Ok(DeserializeWith(serde_with::As::<
2092 serde_with::OneOrMany<serde_with::Same>,
2093 >::deserialize(deserializer)?))
2094 }
2095 }
2096 match map.next_value::<DeserializeWith>() {
2097 Ok(deserialize_with) => deserialize_with.0,
2098 Err(err) => {
2099 return Err(err);
2100 }
2101 }
2102 });
2103 }
2104 Field::Ignore => {
2105 let _ = map.next_value::<de::IgnoredAny>()?;
2106 }
2107 }
2108 }
2109 Ok(MerchantReturnPolicy {
2110 r#additional_property: r#additional_property_property.unwrap_or_default(),
2111 r#applicable_country: r#applicable_country_property.unwrap_or_default(),
2112 r#customer_remorse_return_fees: r#customer_remorse_return_fees_property
2113 .unwrap_or_default(),
2114 r#customer_remorse_return_label_source:
2115 r#customer_remorse_return_label_source_property.unwrap_or_default(),
2116 r#customer_remorse_return_shipping_fees_amount:
2117 r#customer_remorse_return_shipping_fees_amount_property
2118 .unwrap_or_default(),
2119 r#in_store_returns_offered: r#in_store_returns_offered_property
2120 .unwrap_or_default(),
2121 r#item_condition: r#item_condition_property.unwrap_or_default(),
2122 r#item_defect_return_fees: r#item_defect_return_fees_property
2123 .unwrap_or_default(),
2124 r#item_defect_return_label_source:
2125 r#item_defect_return_label_source_property.unwrap_or_default(),
2126 r#item_defect_return_shipping_fees_amount:
2127 r#item_defect_return_shipping_fees_amount_property.unwrap_or_default(),
2128 r#merchant_return_days: r#merchant_return_days_property.unwrap_or_default(),
2129 r#merchant_return_link: r#merchant_return_link_property.unwrap_or_default(),
2130 r#refund_type: r#refund_type_property.unwrap_or_default(),
2131 r#restocking_fee: r#restocking_fee_property.unwrap_or_default(),
2132 r#return_fees: r#return_fees_property.unwrap_or_default(),
2133 r#return_label_source: r#return_label_source_property.unwrap_or_default(),
2134 r#return_method: r#return_method_property.unwrap_or_default(),
2135 r#return_policy_category: r#return_policy_category_property
2136 .unwrap_or_default(),
2137 r#return_policy_country: r#return_policy_country_property
2138 .unwrap_or_default(),
2139 r#return_policy_seasonal_override:
2140 r#return_policy_seasonal_override_property.unwrap_or_default(),
2141 r#return_shipping_fees_amount: r#return_shipping_fees_amount_property
2142 .unwrap_or_default(),
2143 r#additional_type: r#additional_type_property.unwrap_or_default(),
2144 r#alternate_name: r#alternate_name_property.unwrap_or_default(),
2145 r#description: r#description_property.unwrap_or_default(),
2146 r#disambiguating_description: r#disambiguating_description_property
2147 .unwrap_or_default(),
2148 r#identifier: r#identifier_property.unwrap_or_default(),
2149 r#image: r#image_property.unwrap_or_default(),
2150 r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
2151 r#name: r#name_property.unwrap_or_default(),
2152 r#potential_action: r#potential_action_property.unwrap_or_default(),
2153 r#same_as: r#same_as_property.unwrap_or_default(),
2154 r#subject_of: r#subject_of_property.unwrap_or_default(),
2155 r#url: r#url_property.unwrap_or_default(),
2156 })
2157 }
2158 }
2159 const FIELDS: &[&str] = &[
2160 "additionalProperty",
2161 "applicableCountry",
2162 "customerRemorseReturnFees",
2163 "customerRemorseReturnLabelSource",
2164 "customerRemorseReturnShippingFeesAmount",
2165 "inStoreReturnsOffered",
2166 "itemCondition",
2167 "itemDefectReturnFees",
2168 "itemDefectReturnLabelSource",
2169 "itemDefectReturnShippingFeesAmount",
2170 "merchantReturnDays",
2171 "merchantReturnLink",
2172 "refundType",
2173 "restockingFee",
2174 "returnFees",
2175 "returnLabelSource",
2176 "returnMethod",
2177 "returnPolicyCategory",
2178 "returnPolicyCountry",
2179 "returnPolicySeasonalOverride",
2180 "returnShippingFeesAmount",
2181 "additionalType",
2182 "alternateName",
2183 "description",
2184 "disambiguatingDescription",
2185 "identifier",
2186 "image",
2187 "mainEntityOfPage",
2188 "name",
2189 "potentialAction",
2190 "sameAs",
2191 "subjectOf",
2192 "url",
2193 ];
2194 deserializer.deserialize_struct("MerchantReturnPolicy", FIELDS, ClassVisitor)
2195 }
2196 }
2197}