stripe_shared/
payment_links_resource_shipping_address_collection.rs

1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct PaymentLinksResourceShippingAddressCollection {
5    /// An array of two-letter ISO country codes representing which countries Checkout should provide as options for shipping locations.
6    /// Unsupported country codes: `AS, CX, CC, CU, HM, IR, KP, MH, FM, NF, MP, PW, SD, SY, UM, VI`.
7    pub allowed_countries: Vec<PaymentLinksResourceShippingAddressCollectionAllowedCountries>,
8}
9#[doc(hidden)]
10pub struct PaymentLinksResourceShippingAddressCollectionBuilder {
11    allowed_countries: Option<Vec<PaymentLinksResourceShippingAddressCollectionAllowedCountries>>,
12}
13
14#[allow(
15    unused_variables,
16    irrefutable_let_patterns,
17    clippy::let_unit_value,
18    clippy::match_single_binding,
19    clippy::single_match
20)]
21const _: () = {
22    use miniserde::de::{Map, Visitor};
23    use miniserde::json::Value;
24    use miniserde::{Deserialize, Result, make_place};
25    use stripe_types::miniserde_helpers::FromValueOpt;
26    use stripe_types::{MapBuilder, ObjectDeser};
27
28    make_place!(Place);
29
30    impl Deserialize for PaymentLinksResourceShippingAddressCollection {
31        fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
32            Place::new(out)
33        }
34    }
35
36    struct Builder<'a> {
37        out: &'a mut Option<PaymentLinksResourceShippingAddressCollection>,
38        builder: PaymentLinksResourceShippingAddressCollectionBuilder,
39    }
40
41    impl Visitor for Place<PaymentLinksResourceShippingAddressCollection> {
42        fn map(&mut self) -> Result<Box<dyn Map + '_>> {
43            Ok(Box::new(Builder {
44                out: &mut self.out,
45                builder: PaymentLinksResourceShippingAddressCollectionBuilder::deser_default(),
46            }))
47        }
48    }
49
50    impl MapBuilder for PaymentLinksResourceShippingAddressCollectionBuilder {
51        type Out = PaymentLinksResourceShippingAddressCollection;
52        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
53            Ok(match k {
54                "allowed_countries" => Deserialize::begin(&mut self.allowed_countries),
55                _ => <dyn Visitor>::ignore(),
56            })
57        }
58
59        fn deser_default() -> Self {
60            Self { allowed_countries: Deserialize::default() }
61        }
62
63        fn take_out(&mut self) -> Option<Self::Out> {
64            let (Some(allowed_countries),) = (self.allowed_countries.take(),) else {
65                return None;
66            };
67            Some(Self::Out { allowed_countries })
68        }
69    }
70
71    impl Map for Builder<'_> {
72        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
73            self.builder.key(k)
74        }
75
76        fn finish(&mut self) -> Result<()> {
77            *self.out = self.builder.take_out();
78            Ok(())
79        }
80    }
81
82    impl ObjectDeser for PaymentLinksResourceShippingAddressCollection {
83        type Builder = PaymentLinksResourceShippingAddressCollectionBuilder;
84    }
85
86    impl FromValueOpt for PaymentLinksResourceShippingAddressCollection {
87        fn from_value(v: Value) -> Option<Self> {
88            let Value::Object(obj) = v else {
89                return None;
90            };
91            let mut b = PaymentLinksResourceShippingAddressCollectionBuilder::deser_default();
92            for (k, v) in obj {
93                match k.as_str() {
94                    "allowed_countries" => b.allowed_countries = FromValueOpt::from_value(v),
95                    _ => {}
96                }
97            }
98            b.take_out()
99        }
100    }
101};
102/// An array of two-letter ISO country codes representing which countries Checkout should provide as options for shipping locations.
103/// Unsupported country codes: `AS, CX, CC, CU, HM, IR, KP, MH, FM, NF, MP, PW, SD, SY, UM, VI`.
104#[derive(Clone, Eq, PartialEq)]
105#[non_exhaustive]
106pub enum PaymentLinksResourceShippingAddressCollectionAllowedCountries {
107    Ac,
108    Ad,
109    Ae,
110    Af,
111    Ag,
112    Ai,
113    Al,
114    Am,
115    Ao,
116    Aq,
117    Ar,
118    At,
119    Au,
120    Aw,
121    Ax,
122    Az,
123    Ba,
124    Bb,
125    Bd,
126    Be,
127    Bf,
128    Bg,
129    Bh,
130    Bi,
131    Bj,
132    Bl,
133    Bm,
134    Bn,
135    Bo,
136    Bq,
137    Br,
138    Bs,
139    Bt,
140    Bv,
141    Bw,
142    By,
143    Bz,
144    Ca,
145    Cd,
146    Cf,
147    Cg,
148    Ch,
149    Ci,
150    Ck,
151    Cl,
152    Cm,
153    Cn,
154    Co,
155    Cr,
156    Cv,
157    Cw,
158    Cy,
159    Cz,
160    De,
161    Dj,
162    Dk,
163    Dm,
164    Do,
165    Dz,
166    Ec,
167    Ee,
168    Eg,
169    Eh,
170    Er,
171    Es,
172    Et,
173    Fi,
174    Fj,
175    Fk,
176    Fo,
177    Fr,
178    Ga,
179    Gb,
180    Gd,
181    Ge,
182    Gf,
183    Gg,
184    Gh,
185    Gi,
186    Gl,
187    Gm,
188    Gn,
189    Gp,
190    Gq,
191    Gr,
192    Gs,
193    Gt,
194    Gu,
195    Gw,
196    Gy,
197    Hk,
198    Hn,
199    Hr,
200    Ht,
201    Hu,
202    Id,
203    Ie,
204    Il,
205    Im,
206    In,
207    Io,
208    Iq,
209    Is,
210    It,
211    Je,
212    Jm,
213    Jo,
214    Jp,
215    Ke,
216    Kg,
217    Kh,
218    Ki,
219    Km,
220    Kn,
221    Kr,
222    Kw,
223    Ky,
224    Kz,
225    La,
226    Lb,
227    Lc,
228    Li,
229    Lk,
230    Lr,
231    Ls,
232    Lt,
233    Lu,
234    Lv,
235    Ly,
236    Ma,
237    Mc,
238    Md,
239    Me,
240    Mf,
241    Mg,
242    Mk,
243    Ml,
244    Mm,
245    Mn,
246    Mo,
247    Mq,
248    Mr,
249    Ms,
250    Mt,
251    Mu,
252    Mv,
253    Mw,
254    Mx,
255    My,
256    Mz,
257    Na,
258    Nc,
259    Ne,
260    Ng,
261    Ni,
262    Nl,
263    No,
264    Np,
265    Nr,
266    Nu,
267    Nz,
268    Om,
269    Pa,
270    Pe,
271    Pf,
272    Pg,
273    Ph,
274    Pk,
275    Pl,
276    Pm,
277    Pn,
278    Pr,
279    Ps,
280    Pt,
281    Py,
282    Qa,
283    Re,
284    Ro,
285    Rs,
286    Ru,
287    Rw,
288    Sa,
289    Sb,
290    Sc,
291    Sd,
292    Se,
293    Sg,
294    Sh,
295    Si,
296    Sj,
297    Sk,
298    Sl,
299    Sm,
300    Sn,
301    So,
302    Sr,
303    Ss,
304    St,
305    Sv,
306    Sx,
307    Sz,
308    Ta,
309    Tc,
310    Td,
311    Tf,
312    Tg,
313    Th,
314    Tj,
315    Tk,
316    Tl,
317    Tm,
318    Tn,
319    To,
320    Tr,
321    Tt,
322    Tv,
323    Tw,
324    Tz,
325    Ua,
326    Ug,
327    Us,
328    Uy,
329    Uz,
330    Va,
331    Vc,
332    Ve,
333    Vg,
334    Vn,
335    Vu,
336    Wf,
337    Ws,
338    Xk,
339    Ye,
340    Yt,
341    Za,
342    Zm,
343    Zw,
344    Zz,
345    /// An unrecognized value from Stripe. Should not be used as a request parameter.
346    Unknown(String),
347}
348impl PaymentLinksResourceShippingAddressCollectionAllowedCountries {
349    pub fn as_str(&self) -> &str {
350        use PaymentLinksResourceShippingAddressCollectionAllowedCountries::*;
351        match self {
352            Ac => "AC",
353            Ad => "AD",
354            Ae => "AE",
355            Af => "AF",
356            Ag => "AG",
357            Ai => "AI",
358            Al => "AL",
359            Am => "AM",
360            Ao => "AO",
361            Aq => "AQ",
362            Ar => "AR",
363            At => "AT",
364            Au => "AU",
365            Aw => "AW",
366            Ax => "AX",
367            Az => "AZ",
368            Ba => "BA",
369            Bb => "BB",
370            Bd => "BD",
371            Be => "BE",
372            Bf => "BF",
373            Bg => "BG",
374            Bh => "BH",
375            Bi => "BI",
376            Bj => "BJ",
377            Bl => "BL",
378            Bm => "BM",
379            Bn => "BN",
380            Bo => "BO",
381            Bq => "BQ",
382            Br => "BR",
383            Bs => "BS",
384            Bt => "BT",
385            Bv => "BV",
386            Bw => "BW",
387            By => "BY",
388            Bz => "BZ",
389            Ca => "CA",
390            Cd => "CD",
391            Cf => "CF",
392            Cg => "CG",
393            Ch => "CH",
394            Ci => "CI",
395            Ck => "CK",
396            Cl => "CL",
397            Cm => "CM",
398            Cn => "CN",
399            Co => "CO",
400            Cr => "CR",
401            Cv => "CV",
402            Cw => "CW",
403            Cy => "CY",
404            Cz => "CZ",
405            De => "DE",
406            Dj => "DJ",
407            Dk => "DK",
408            Dm => "DM",
409            Do => "DO",
410            Dz => "DZ",
411            Ec => "EC",
412            Ee => "EE",
413            Eg => "EG",
414            Eh => "EH",
415            Er => "ER",
416            Es => "ES",
417            Et => "ET",
418            Fi => "FI",
419            Fj => "FJ",
420            Fk => "FK",
421            Fo => "FO",
422            Fr => "FR",
423            Ga => "GA",
424            Gb => "GB",
425            Gd => "GD",
426            Ge => "GE",
427            Gf => "GF",
428            Gg => "GG",
429            Gh => "GH",
430            Gi => "GI",
431            Gl => "GL",
432            Gm => "GM",
433            Gn => "GN",
434            Gp => "GP",
435            Gq => "GQ",
436            Gr => "GR",
437            Gs => "GS",
438            Gt => "GT",
439            Gu => "GU",
440            Gw => "GW",
441            Gy => "GY",
442            Hk => "HK",
443            Hn => "HN",
444            Hr => "HR",
445            Ht => "HT",
446            Hu => "HU",
447            Id => "ID",
448            Ie => "IE",
449            Il => "IL",
450            Im => "IM",
451            In => "IN",
452            Io => "IO",
453            Iq => "IQ",
454            Is => "IS",
455            It => "IT",
456            Je => "JE",
457            Jm => "JM",
458            Jo => "JO",
459            Jp => "JP",
460            Ke => "KE",
461            Kg => "KG",
462            Kh => "KH",
463            Ki => "KI",
464            Km => "KM",
465            Kn => "KN",
466            Kr => "KR",
467            Kw => "KW",
468            Ky => "KY",
469            Kz => "KZ",
470            La => "LA",
471            Lb => "LB",
472            Lc => "LC",
473            Li => "LI",
474            Lk => "LK",
475            Lr => "LR",
476            Ls => "LS",
477            Lt => "LT",
478            Lu => "LU",
479            Lv => "LV",
480            Ly => "LY",
481            Ma => "MA",
482            Mc => "MC",
483            Md => "MD",
484            Me => "ME",
485            Mf => "MF",
486            Mg => "MG",
487            Mk => "MK",
488            Ml => "ML",
489            Mm => "MM",
490            Mn => "MN",
491            Mo => "MO",
492            Mq => "MQ",
493            Mr => "MR",
494            Ms => "MS",
495            Mt => "MT",
496            Mu => "MU",
497            Mv => "MV",
498            Mw => "MW",
499            Mx => "MX",
500            My => "MY",
501            Mz => "MZ",
502            Na => "NA",
503            Nc => "NC",
504            Ne => "NE",
505            Ng => "NG",
506            Ni => "NI",
507            Nl => "NL",
508            No => "NO",
509            Np => "NP",
510            Nr => "NR",
511            Nu => "NU",
512            Nz => "NZ",
513            Om => "OM",
514            Pa => "PA",
515            Pe => "PE",
516            Pf => "PF",
517            Pg => "PG",
518            Ph => "PH",
519            Pk => "PK",
520            Pl => "PL",
521            Pm => "PM",
522            Pn => "PN",
523            Pr => "PR",
524            Ps => "PS",
525            Pt => "PT",
526            Py => "PY",
527            Qa => "QA",
528            Re => "RE",
529            Ro => "RO",
530            Rs => "RS",
531            Ru => "RU",
532            Rw => "RW",
533            Sa => "SA",
534            Sb => "SB",
535            Sc => "SC",
536            Sd => "SD",
537            Se => "SE",
538            Sg => "SG",
539            Sh => "SH",
540            Si => "SI",
541            Sj => "SJ",
542            Sk => "SK",
543            Sl => "SL",
544            Sm => "SM",
545            Sn => "SN",
546            So => "SO",
547            Sr => "SR",
548            Ss => "SS",
549            St => "ST",
550            Sv => "SV",
551            Sx => "SX",
552            Sz => "SZ",
553            Ta => "TA",
554            Tc => "TC",
555            Td => "TD",
556            Tf => "TF",
557            Tg => "TG",
558            Th => "TH",
559            Tj => "TJ",
560            Tk => "TK",
561            Tl => "TL",
562            Tm => "TM",
563            Tn => "TN",
564            To => "TO",
565            Tr => "TR",
566            Tt => "TT",
567            Tv => "TV",
568            Tw => "TW",
569            Tz => "TZ",
570            Ua => "UA",
571            Ug => "UG",
572            Us => "US",
573            Uy => "UY",
574            Uz => "UZ",
575            Va => "VA",
576            Vc => "VC",
577            Ve => "VE",
578            Vg => "VG",
579            Vn => "VN",
580            Vu => "VU",
581            Wf => "WF",
582            Ws => "WS",
583            Xk => "XK",
584            Ye => "YE",
585            Yt => "YT",
586            Za => "ZA",
587            Zm => "ZM",
588            Zw => "ZW",
589            Zz => "ZZ",
590            Unknown(v) => v,
591        }
592    }
593}
594
595impl std::str::FromStr for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
596    type Err = std::convert::Infallible;
597    fn from_str(s: &str) -> Result<Self, Self::Err> {
598        use PaymentLinksResourceShippingAddressCollectionAllowedCountries::*;
599        match s {
600            "AC" => Ok(Ac),
601            "AD" => Ok(Ad),
602            "AE" => Ok(Ae),
603            "AF" => Ok(Af),
604            "AG" => Ok(Ag),
605            "AI" => Ok(Ai),
606            "AL" => Ok(Al),
607            "AM" => Ok(Am),
608            "AO" => Ok(Ao),
609            "AQ" => Ok(Aq),
610            "AR" => Ok(Ar),
611            "AT" => Ok(At),
612            "AU" => Ok(Au),
613            "AW" => Ok(Aw),
614            "AX" => Ok(Ax),
615            "AZ" => Ok(Az),
616            "BA" => Ok(Ba),
617            "BB" => Ok(Bb),
618            "BD" => Ok(Bd),
619            "BE" => Ok(Be),
620            "BF" => Ok(Bf),
621            "BG" => Ok(Bg),
622            "BH" => Ok(Bh),
623            "BI" => Ok(Bi),
624            "BJ" => Ok(Bj),
625            "BL" => Ok(Bl),
626            "BM" => Ok(Bm),
627            "BN" => Ok(Bn),
628            "BO" => Ok(Bo),
629            "BQ" => Ok(Bq),
630            "BR" => Ok(Br),
631            "BS" => Ok(Bs),
632            "BT" => Ok(Bt),
633            "BV" => Ok(Bv),
634            "BW" => Ok(Bw),
635            "BY" => Ok(By),
636            "BZ" => Ok(Bz),
637            "CA" => Ok(Ca),
638            "CD" => Ok(Cd),
639            "CF" => Ok(Cf),
640            "CG" => Ok(Cg),
641            "CH" => Ok(Ch),
642            "CI" => Ok(Ci),
643            "CK" => Ok(Ck),
644            "CL" => Ok(Cl),
645            "CM" => Ok(Cm),
646            "CN" => Ok(Cn),
647            "CO" => Ok(Co),
648            "CR" => Ok(Cr),
649            "CV" => Ok(Cv),
650            "CW" => Ok(Cw),
651            "CY" => Ok(Cy),
652            "CZ" => Ok(Cz),
653            "DE" => Ok(De),
654            "DJ" => Ok(Dj),
655            "DK" => Ok(Dk),
656            "DM" => Ok(Dm),
657            "DO" => Ok(Do),
658            "DZ" => Ok(Dz),
659            "EC" => Ok(Ec),
660            "EE" => Ok(Ee),
661            "EG" => Ok(Eg),
662            "EH" => Ok(Eh),
663            "ER" => Ok(Er),
664            "ES" => Ok(Es),
665            "ET" => Ok(Et),
666            "FI" => Ok(Fi),
667            "FJ" => Ok(Fj),
668            "FK" => Ok(Fk),
669            "FO" => Ok(Fo),
670            "FR" => Ok(Fr),
671            "GA" => Ok(Ga),
672            "GB" => Ok(Gb),
673            "GD" => Ok(Gd),
674            "GE" => Ok(Ge),
675            "GF" => Ok(Gf),
676            "GG" => Ok(Gg),
677            "GH" => Ok(Gh),
678            "GI" => Ok(Gi),
679            "GL" => Ok(Gl),
680            "GM" => Ok(Gm),
681            "GN" => Ok(Gn),
682            "GP" => Ok(Gp),
683            "GQ" => Ok(Gq),
684            "GR" => Ok(Gr),
685            "GS" => Ok(Gs),
686            "GT" => Ok(Gt),
687            "GU" => Ok(Gu),
688            "GW" => Ok(Gw),
689            "GY" => Ok(Gy),
690            "HK" => Ok(Hk),
691            "HN" => Ok(Hn),
692            "HR" => Ok(Hr),
693            "HT" => Ok(Ht),
694            "HU" => Ok(Hu),
695            "ID" => Ok(Id),
696            "IE" => Ok(Ie),
697            "IL" => Ok(Il),
698            "IM" => Ok(Im),
699            "IN" => Ok(In),
700            "IO" => Ok(Io),
701            "IQ" => Ok(Iq),
702            "IS" => Ok(Is),
703            "IT" => Ok(It),
704            "JE" => Ok(Je),
705            "JM" => Ok(Jm),
706            "JO" => Ok(Jo),
707            "JP" => Ok(Jp),
708            "KE" => Ok(Ke),
709            "KG" => Ok(Kg),
710            "KH" => Ok(Kh),
711            "KI" => Ok(Ki),
712            "KM" => Ok(Km),
713            "KN" => Ok(Kn),
714            "KR" => Ok(Kr),
715            "KW" => Ok(Kw),
716            "KY" => Ok(Ky),
717            "KZ" => Ok(Kz),
718            "LA" => Ok(La),
719            "LB" => Ok(Lb),
720            "LC" => Ok(Lc),
721            "LI" => Ok(Li),
722            "LK" => Ok(Lk),
723            "LR" => Ok(Lr),
724            "LS" => Ok(Ls),
725            "LT" => Ok(Lt),
726            "LU" => Ok(Lu),
727            "LV" => Ok(Lv),
728            "LY" => Ok(Ly),
729            "MA" => Ok(Ma),
730            "MC" => Ok(Mc),
731            "MD" => Ok(Md),
732            "ME" => Ok(Me),
733            "MF" => Ok(Mf),
734            "MG" => Ok(Mg),
735            "MK" => Ok(Mk),
736            "ML" => Ok(Ml),
737            "MM" => Ok(Mm),
738            "MN" => Ok(Mn),
739            "MO" => Ok(Mo),
740            "MQ" => Ok(Mq),
741            "MR" => Ok(Mr),
742            "MS" => Ok(Ms),
743            "MT" => Ok(Mt),
744            "MU" => Ok(Mu),
745            "MV" => Ok(Mv),
746            "MW" => Ok(Mw),
747            "MX" => Ok(Mx),
748            "MY" => Ok(My),
749            "MZ" => Ok(Mz),
750            "NA" => Ok(Na),
751            "NC" => Ok(Nc),
752            "NE" => Ok(Ne),
753            "NG" => Ok(Ng),
754            "NI" => Ok(Ni),
755            "NL" => Ok(Nl),
756            "NO" => Ok(No),
757            "NP" => Ok(Np),
758            "NR" => Ok(Nr),
759            "NU" => Ok(Nu),
760            "NZ" => Ok(Nz),
761            "OM" => Ok(Om),
762            "PA" => Ok(Pa),
763            "PE" => Ok(Pe),
764            "PF" => Ok(Pf),
765            "PG" => Ok(Pg),
766            "PH" => Ok(Ph),
767            "PK" => Ok(Pk),
768            "PL" => Ok(Pl),
769            "PM" => Ok(Pm),
770            "PN" => Ok(Pn),
771            "PR" => Ok(Pr),
772            "PS" => Ok(Ps),
773            "PT" => Ok(Pt),
774            "PY" => Ok(Py),
775            "QA" => Ok(Qa),
776            "RE" => Ok(Re),
777            "RO" => Ok(Ro),
778            "RS" => Ok(Rs),
779            "RU" => Ok(Ru),
780            "RW" => Ok(Rw),
781            "SA" => Ok(Sa),
782            "SB" => Ok(Sb),
783            "SC" => Ok(Sc),
784            "SD" => Ok(Sd),
785            "SE" => Ok(Se),
786            "SG" => Ok(Sg),
787            "SH" => Ok(Sh),
788            "SI" => Ok(Si),
789            "SJ" => Ok(Sj),
790            "SK" => Ok(Sk),
791            "SL" => Ok(Sl),
792            "SM" => Ok(Sm),
793            "SN" => Ok(Sn),
794            "SO" => Ok(So),
795            "SR" => Ok(Sr),
796            "SS" => Ok(Ss),
797            "ST" => Ok(St),
798            "SV" => Ok(Sv),
799            "SX" => Ok(Sx),
800            "SZ" => Ok(Sz),
801            "TA" => Ok(Ta),
802            "TC" => Ok(Tc),
803            "TD" => Ok(Td),
804            "TF" => Ok(Tf),
805            "TG" => Ok(Tg),
806            "TH" => Ok(Th),
807            "TJ" => Ok(Tj),
808            "TK" => Ok(Tk),
809            "TL" => Ok(Tl),
810            "TM" => Ok(Tm),
811            "TN" => Ok(Tn),
812            "TO" => Ok(To),
813            "TR" => Ok(Tr),
814            "TT" => Ok(Tt),
815            "TV" => Ok(Tv),
816            "TW" => Ok(Tw),
817            "TZ" => Ok(Tz),
818            "UA" => Ok(Ua),
819            "UG" => Ok(Ug),
820            "US" => Ok(Us),
821            "UY" => Ok(Uy),
822            "UZ" => Ok(Uz),
823            "VA" => Ok(Va),
824            "VC" => Ok(Vc),
825            "VE" => Ok(Ve),
826            "VG" => Ok(Vg),
827            "VN" => Ok(Vn),
828            "VU" => Ok(Vu),
829            "WF" => Ok(Wf),
830            "WS" => Ok(Ws),
831            "XK" => Ok(Xk),
832            "YE" => Ok(Ye),
833            "YT" => Ok(Yt),
834            "ZA" => Ok(Za),
835            "ZM" => Ok(Zm),
836            "ZW" => Ok(Zw),
837            "ZZ" => Ok(Zz),
838            v => Ok(Unknown(v.to_owned())),
839        }
840    }
841}
842impl std::fmt::Display for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
843    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
844        f.write_str(self.as_str())
845    }
846}
847
848impl std::fmt::Debug for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
849    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
850        f.write_str(self.as_str())
851    }
852}
853#[cfg(feature = "serialize")]
854impl serde::Serialize for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
855    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
856    where
857        S: serde::Serializer,
858    {
859        serializer.serialize_str(self.as_str())
860    }
861}
862impl miniserde::Deserialize for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
863    fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
864        crate::Place::new(out)
865    }
866}
867
868impl miniserde::de::Visitor
869    for crate::Place<PaymentLinksResourceShippingAddressCollectionAllowedCountries>
870{
871    fn string(&mut self, s: &str) -> miniserde::Result<()> {
872        use std::str::FromStr;
873        self.out = Some(
874            PaymentLinksResourceShippingAddressCollectionAllowedCountries::from_str(s).unwrap(),
875        );
876        Ok(())
877    }
878}
879
880stripe_types::impl_from_val_with_from_str!(
881    PaymentLinksResourceShippingAddressCollectionAllowedCountries
882);
883#[cfg(feature = "deserialize")]
884impl<'de> serde::Deserialize<'de>
885    for PaymentLinksResourceShippingAddressCollectionAllowedCountries
886{
887    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
888        use std::str::FromStr;
889        let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
890        Ok(Self::from_str(&s).unwrap())
891    }
892}