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