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