Skip to main content

stripe_shared/
payment_links_resource_shipping_address_collection.rs

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