#[derive(Clone, Eq, PartialEq)]
#[cfg_attr(not(feature = "redact-generated-debug"), derive(Debug))]
#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
pub struct PaymentLinksResourceShippingAddressCollection {
pub allowed_countries: Vec<PaymentLinksResourceShippingAddressCollectionAllowedCountries>,
}
#[cfg(feature = "redact-generated-debug")]
impl std::fmt::Debug for PaymentLinksResourceShippingAddressCollection {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PaymentLinksResourceShippingAddressCollection").finish_non_exhaustive()
}
}
#[doc(hidden)]
pub struct PaymentLinksResourceShippingAddressCollectionBuilder {
allowed_countries: Option<Vec<PaymentLinksResourceShippingAddressCollectionAllowedCountries>>,
}
#[allow(
unused_variables,
irrefutable_let_patterns,
clippy::let_unit_value,
clippy::match_single_binding,
clippy::single_match
)]
const _: () = {
use miniserde::de::{Map, Visitor};
use miniserde::json::Value;
use miniserde::{Deserialize, Result, make_place};
use stripe_types::miniserde_helpers::FromValueOpt;
use stripe_types::{MapBuilder, ObjectDeser};
make_place!(Place);
impl Deserialize for PaymentLinksResourceShippingAddressCollection {
fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
Place::new(out)
}
}
struct Builder<'a> {
out: &'a mut Option<PaymentLinksResourceShippingAddressCollection>,
builder: PaymentLinksResourceShippingAddressCollectionBuilder,
}
impl Visitor for Place<PaymentLinksResourceShippingAddressCollection> {
fn map(&mut self) -> Result<Box<dyn Map + '_>> {
Ok(Box::new(Builder {
out: &mut self.out,
builder: PaymentLinksResourceShippingAddressCollectionBuilder::deser_default(),
}))
}
}
impl MapBuilder for PaymentLinksResourceShippingAddressCollectionBuilder {
type Out = PaymentLinksResourceShippingAddressCollection;
fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
Ok(match k {
"allowed_countries" => Deserialize::begin(&mut self.allowed_countries),
_ => <dyn Visitor>::ignore(),
})
}
fn deser_default() -> Self {
Self { allowed_countries: None }
}
fn take_out(&mut self) -> Option<Self::Out> {
let (Some(allowed_countries),) = (self.allowed_countries.take(),) else {
return None;
};
Some(Self::Out { allowed_countries })
}
}
impl Map for Builder<'_> {
fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
self.builder.key(k)
}
fn finish(&mut self) -> Result<()> {
*self.out = self.builder.take_out();
Ok(())
}
}
impl ObjectDeser for PaymentLinksResourceShippingAddressCollection {
type Builder = PaymentLinksResourceShippingAddressCollectionBuilder;
}
impl FromValueOpt for PaymentLinksResourceShippingAddressCollection {
fn from_value(v: Value) -> Option<Self> {
let Value::Object(obj) = v else {
return None;
};
let mut b = PaymentLinksResourceShippingAddressCollectionBuilder::deser_default();
for (k, v) in obj {
match k.as_str() {
"allowed_countries" => b.allowed_countries = FromValueOpt::from_value(v),
_ => {}
}
}
b.take_out()
}
}
};
#[derive(Clone, Eq, PartialEq)]
#[non_exhaustive]
pub enum PaymentLinksResourceShippingAddressCollectionAllowedCountries {
Ac,
Ad,
Ae,
Af,
Ag,
Ai,
Al,
Am,
Ao,
Aq,
Ar,
At,
Au,
Aw,
Ax,
Az,
Ba,
Bb,
Bd,
Be,
Bf,
Bg,
Bh,
Bi,
Bj,
Bl,
Bm,
Bn,
Bo,
Bq,
Br,
Bs,
Bt,
Bv,
Bw,
By,
Bz,
Ca,
Cd,
Cf,
Cg,
Ch,
Ci,
Ck,
Cl,
Cm,
Cn,
Co,
Cr,
Cv,
Cw,
Cy,
Cz,
De,
Dj,
Dk,
Dm,
Do,
Dz,
Ec,
Ee,
Eg,
Eh,
Er,
Es,
Et,
Fi,
Fj,
Fk,
Fo,
Fr,
Ga,
Gb,
Gd,
Ge,
Gf,
Gg,
Gh,
Gi,
Gl,
Gm,
Gn,
Gp,
Gq,
Gr,
Gs,
Gt,
Gu,
Gw,
Gy,
Hk,
Hn,
Hr,
Ht,
Hu,
Id,
Ie,
Il,
Im,
In,
Io,
Iq,
Is,
It,
Je,
Jm,
Jo,
Jp,
Ke,
Kg,
Kh,
Ki,
Km,
Kn,
Kr,
Kw,
Ky,
Kz,
La,
Lb,
Lc,
Li,
Lk,
Lr,
Ls,
Lt,
Lu,
Lv,
Ly,
Ma,
Mc,
Md,
Me,
Mf,
Mg,
Mk,
Ml,
Mm,
Mn,
Mo,
Mq,
Mr,
Ms,
Mt,
Mu,
Mv,
Mw,
Mx,
My,
Mz,
Na,
Nc,
Ne,
Ng,
Ni,
Nl,
No,
Np,
Nr,
Nu,
Nz,
Om,
Pa,
Pe,
Pf,
Pg,
Ph,
Pk,
Pl,
Pm,
Pn,
Pr,
Ps,
Pt,
Py,
Qa,
Re,
Ro,
Rs,
Ru,
Rw,
Sa,
Sb,
Sc,
Sd,
Se,
Sg,
Sh,
Si,
Sj,
Sk,
Sl,
Sm,
Sn,
So,
Sr,
Ss,
St,
Sv,
Sx,
Sz,
Ta,
Tc,
Td,
Tf,
Tg,
Th,
Tj,
Tk,
Tl,
Tm,
Tn,
To,
Tr,
Tt,
Tv,
Tw,
Tz,
Ua,
Ug,
Us,
Uy,
Uz,
Va,
Vc,
Ve,
Vg,
Vn,
Vu,
Wf,
Ws,
Xk,
Ye,
Yt,
Za,
Zm,
Zw,
Zz,
Unknown(String),
}
impl PaymentLinksResourceShippingAddressCollectionAllowedCountries {
pub fn as_str(&self) -> &str {
use PaymentLinksResourceShippingAddressCollectionAllowedCountries::*;
match self {
Ac => "AC",
Ad => "AD",
Ae => "AE",
Af => "AF",
Ag => "AG",
Ai => "AI",
Al => "AL",
Am => "AM",
Ao => "AO",
Aq => "AQ",
Ar => "AR",
At => "AT",
Au => "AU",
Aw => "AW",
Ax => "AX",
Az => "AZ",
Ba => "BA",
Bb => "BB",
Bd => "BD",
Be => "BE",
Bf => "BF",
Bg => "BG",
Bh => "BH",
Bi => "BI",
Bj => "BJ",
Bl => "BL",
Bm => "BM",
Bn => "BN",
Bo => "BO",
Bq => "BQ",
Br => "BR",
Bs => "BS",
Bt => "BT",
Bv => "BV",
Bw => "BW",
By => "BY",
Bz => "BZ",
Ca => "CA",
Cd => "CD",
Cf => "CF",
Cg => "CG",
Ch => "CH",
Ci => "CI",
Ck => "CK",
Cl => "CL",
Cm => "CM",
Cn => "CN",
Co => "CO",
Cr => "CR",
Cv => "CV",
Cw => "CW",
Cy => "CY",
Cz => "CZ",
De => "DE",
Dj => "DJ",
Dk => "DK",
Dm => "DM",
Do => "DO",
Dz => "DZ",
Ec => "EC",
Ee => "EE",
Eg => "EG",
Eh => "EH",
Er => "ER",
Es => "ES",
Et => "ET",
Fi => "FI",
Fj => "FJ",
Fk => "FK",
Fo => "FO",
Fr => "FR",
Ga => "GA",
Gb => "GB",
Gd => "GD",
Ge => "GE",
Gf => "GF",
Gg => "GG",
Gh => "GH",
Gi => "GI",
Gl => "GL",
Gm => "GM",
Gn => "GN",
Gp => "GP",
Gq => "GQ",
Gr => "GR",
Gs => "GS",
Gt => "GT",
Gu => "GU",
Gw => "GW",
Gy => "GY",
Hk => "HK",
Hn => "HN",
Hr => "HR",
Ht => "HT",
Hu => "HU",
Id => "ID",
Ie => "IE",
Il => "IL",
Im => "IM",
In => "IN",
Io => "IO",
Iq => "IQ",
Is => "IS",
It => "IT",
Je => "JE",
Jm => "JM",
Jo => "JO",
Jp => "JP",
Ke => "KE",
Kg => "KG",
Kh => "KH",
Ki => "KI",
Km => "KM",
Kn => "KN",
Kr => "KR",
Kw => "KW",
Ky => "KY",
Kz => "KZ",
La => "LA",
Lb => "LB",
Lc => "LC",
Li => "LI",
Lk => "LK",
Lr => "LR",
Ls => "LS",
Lt => "LT",
Lu => "LU",
Lv => "LV",
Ly => "LY",
Ma => "MA",
Mc => "MC",
Md => "MD",
Me => "ME",
Mf => "MF",
Mg => "MG",
Mk => "MK",
Ml => "ML",
Mm => "MM",
Mn => "MN",
Mo => "MO",
Mq => "MQ",
Mr => "MR",
Ms => "MS",
Mt => "MT",
Mu => "MU",
Mv => "MV",
Mw => "MW",
Mx => "MX",
My => "MY",
Mz => "MZ",
Na => "NA",
Nc => "NC",
Ne => "NE",
Ng => "NG",
Ni => "NI",
Nl => "NL",
No => "NO",
Np => "NP",
Nr => "NR",
Nu => "NU",
Nz => "NZ",
Om => "OM",
Pa => "PA",
Pe => "PE",
Pf => "PF",
Pg => "PG",
Ph => "PH",
Pk => "PK",
Pl => "PL",
Pm => "PM",
Pn => "PN",
Pr => "PR",
Ps => "PS",
Pt => "PT",
Py => "PY",
Qa => "QA",
Re => "RE",
Ro => "RO",
Rs => "RS",
Ru => "RU",
Rw => "RW",
Sa => "SA",
Sb => "SB",
Sc => "SC",
Sd => "SD",
Se => "SE",
Sg => "SG",
Sh => "SH",
Si => "SI",
Sj => "SJ",
Sk => "SK",
Sl => "SL",
Sm => "SM",
Sn => "SN",
So => "SO",
Sr => "SR",
Ss => "SS",
St => "ST",
Sv => "SV",
Sx => "SX",
Sz => "SZ",
Ta => "TA",
Tc => "TC",
Td => "TD",
Tf => "TF",
Tg => "TG",
Th => "TH",
Tj => "TJ",
Tk => "TK",
Tl => "TL",
Tm => "TM",
Tn => "TN",
To => "TO",
Tr => "TR",
Tt => "TT",
Tv => "TV",
Tw => "TW",
Tz => "TZ",
Ua => "UA",
Ug => "UG",
Us => "US",
Uy => "UY",
Uz => "UZ",
Va => "VA",
Vc => "VC",
Ve => "VE",
Vg => "VG",
Vn => "VN",
Vu => "VU",
Wf => "WF",
Ws => "WS",
Xk => "XK",
Ye => "YE",
Yt => "YT",
Za => "ZA",
Zm => "ZM",
Zw => "ZW",
Zz => "ZZ",
Unknown(v) => v,
}
}
}
impl std::str::FromStr for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
type Err = std::convert::Infallible;
fn from_str(s: &str) -> Result<Self, Self::Err> {
use PaymentLinksResourceShippingAddressCollectionAllowedCountries::*;
match s {
"AC" => Ok(Ac),
"AD" => Ok(Ad),
"AE" => Ok(Ae),
"AF" => Ok(Af),
"AG" => Ok(Ag),
"AI" => Ok(Ai),
"AL" => Ok(Al),
"AM" => Ok(Am),
"AO" => Ok(Ao),
"AQ" => Ok(Aq),
"AR" => Ok(Ar),
"AT" => Ok(At),
"AU" => Ok(Au),
"AW" => Ok(Aw),
"AX" => Ok(Ax),
"AZ" => Ok(Az),
"BA" => Ok(Ba),
"BB" => Ok(Bb),
"BD" => Ok(Bd),
"BE" => Ok(Be),
"BF" => Ok(Bf),
"BG" => Ok(Bg),
"BH" => Ok(Bh),
"BI" => Ok(Bi),
"BJ" => Ok(Bj),
"BL" => Ok(Bl),
"BM" => Ok(Bm),
"BN" => Ok(Bn),
"BO" => Ok(Bo),
"BQ" => Ok(Bq),
"BR" => Ok(Br),
"BS" => Ok(Bs),
"BT" => Ok(Bt),
"BV" => Ok(Bv),
"BW" => Ok(Bw),
"BY" => Ok(By),
"BZ" => Ok(Bz),
"CA" => Ok(Ca),
"CD" => Ok(Cd),
"CF" => Ok(Cf),
"CG" => Ok(Cg),
"CH" => Ok(Ch),
"CI" => Ok(Ci),
"CK" => Ok(Ck),
"CL" => Ok(Cl),
"CM" => Ok(Cm),
"CN" => Ok(Cn),
"CO" => Ok(Co),
"CR" => Ok(Cr),
"CV" => Ok(Cv),
"CW" => Ok(Cw),
"CY" => Ok(Cy),
"CZ" => Ok(Cz),
"DE" => Ok(De),
"DJ" => Ok(Dj),
"DK" => Ok(Dk),
"DM" => Ok(Dm),
"DO" => Ok(Do),
"DZ" => Ok(Dz),
"EC" => Ok(Ec),
"EE" => Ok(Ee),
"EG" => Ok(Eg),
"EH" => Ok(Eh),
"ER" => Ok(Er),
"ES" => Ok(Es),
"ET" => Ok(Et),
"FI" => Ok(Fi),
"FJ" => Ok(Fj),
"FK" => Ok(Fk),
"FO" => Ok(Fo),
"FR" => Ok(Fr),
"GA" => Ok(Ga),
"GB" => Ok(Gb),
"GD" => Ok(Gd),
"GE" => Ok(Ge),
"GF" => Ok(Gf),
"GG" => Ok(Gg),
"GH" => Ok(Gh),
"GI" => Ok(Gi),
"GL" => Ok(Gl),
"GM" => Ok(Gm),
"GN" => Ok(Gn),
"GP" => Ok(Gp),
"GQ" => Ok(Gq),
"GR" => Ok(Gr),
"GS" => Ok(Gs),
"GT" => Ok(Gt),
"GU" => Ok(Gu),
"GW" => Ok(Gw),
"GY" => Ok(Gy),
"HK" => Ok(Hk),
"HN" => Ok(Hn),
"HR" => Ok(Hr),
"HT" => Ok(Ht),
"HU" => Ok(Hu),
"ID" => Ok(Id),
"IE" => Ok(Ie),
"IL" => Ok(Il),
"IM" => Ok(Im),
"IN" => Ok(In),
"IO" => Ok(Io),
"IQ" => Ok(Iq),
"IS" => Ok(Is),
"IT" => Ok(It),
"JE" => Ok(Je),
"JM" => Ok(Jm),
"JO" => Ok(Jo),
"JP" => Ok(Jp),
"KE" => Ok(Ke),
"KG" => Ok(Kg),
"KH" => Ok(Kh),
"KI" => Ok(Ki),
"KM" => Ok(Km),
"KN" => Ok(Kn),
"KR" => Ok(Kr),
"KW" => Ok(Kw),
"KY" => Ok(Ky),
"KZ" => Ok(Kz),
"LA" => Ok(La),
"LB" => Ok(Lb),
"LC" => Ok(Lc),
"LI" => Ok(Li),
"LK" => Ok(Lk),
"LR" => Ok(Lr),
"LS" => Ok(Ls),
"LT" => Ok(Lt),
"LU" => Ok(Lu),
"LV" => Ok(Lv),
"LY" => Ok(Ly),
"MA" => Ok(Ma),
"MC" => Ok(Mc),
"MD" => Ok(Md),
"ME" => Ok(Me),
"MF" => Ok(Mf),
"MG" => Ok(Mg),
"MK" => Ok(Mk),
"ML" => Ok(Ml),
"MM" => Ok(Mm),
"MN" => Ok(Mn),
"MO" => Ok(Mo),
"MQ" => Ok(Mq),
"MR" => Ok(Mr),
"MS" => Ok(Ms),
"MT" => Ok(Mt),
"MU" => Ok(Mu),
"MV" => Ok(Mv),
"MW" => Ok(Mw),
"MX" => Ok(Mx),
"MY" => Ok(My),
"MZ" => Ok(Mz),
"NA" => Ok(Na),
"NC" => Ok(Nc),
"NE" => Ok(Ne),
"NG" => Ok(Ng),
"NI" => Ok(Ni),
"NL" => Ok(Nl),
"NO" => Ok(No),
"NP" => Ok(Np),
"NR" => Ok(Nr),
"NU" => Ok(Nu),
"NZ" => Ok(Nz),
"OM" => Ok(Om),
"PA" => Ok(Pa),
"PE" => Ok(Pe),
"PF" => Ok(Pf),
"PG" => Ok(Pg),
"PH" => Ok(Ph),
"PK" => Ok(Pk),
"PL" => Ok(Pl),
"PM" => Ok(Pm),
"PN" => Ok(Pn),
"PR" => Ok(Pr),
"PS" => Ok(Ps),
"PT" => Ok(Pt),
"PY" => Ok(Py),
"QA" => Ok(Qa),
"RE" => Ok(Re),
"RO" => Ok(Ro),
"RS" => Ok(Rs),
"RU" => Ok(Ru),
"RW" => Ok(Rw),
"SA" => Ok(Sa),
"SB" => Ok(Sb),
"SC" => Ok(Sc),
"SD" => Ok(Sd),
"SE" => Ok(Se),
"SG" => Ok(Sg),
"SH" => Ok(Sh),
"SI" => Ok(Si),
"SJ" => Ok(Sj),
"SK" => Ok(Sk),
"SL" => Ok(Sl),
"SM" => Ok(Sm),
"SN" => Ok(Sn),
"SO" => Ok(So),
"SR" => Ok(Sr),
"SS" => Ok(Ss),
"ST" => Ok(St),
"SV" => Ok(Sv),
"SX" => Ok(Sx),
"SZ" => Ok(Sz),
"TA" => Ok(Ta),
"TC" => Ok(Tc),
"TD" => Ok(Td),
"TF" => Ok(Tf),
"TG" => Ok(Tg),
"TH" => Ok(Th),
"TJ" => Ok(Tj),
"TK" => Ok(Tk),
"TL" => Ok(Tl),
"TM" => Ok(Tm),
"TN" => Ok(Tn),
"TO" => Ok(To),
"TR" => Ok(Tr),
"TT" => Ok(Tt),
"TV" => Ok(Tv),
"TW" => Ok(Tw),
"TZ" => Ok(Tz),
"UA" => Ok(Ua),
"UG" => Ok(Ug),
"US" => Ok(Us),
"UY" => Ok(Uy),
"UZ" => Ok(Uz),
"VA" => Ok(Va),
"VC" => Ok(Vc),
"VE" => Ok(Ve),
"VG" => Ok(Vg),
"VN" => Ok(Vn),
"VU" => Ok(Vu),
"WF" => Ok(Wf),
"WS" => Ok(Ws),
"XK" => Ok(Xk),
"YE" => Ok(Ye),
"YT" => Ok(Yt),
"ZA" => Ok(Za),
"ZM" => Ok(Zm),
"ZW" => Ok(Zw),
"ZZ" => Ok(Zz),
v => {
tracing::warn!(
"Unknown value '{}' for enum '{}'",
v,
"PaymentLinksResourceShippingAddressCollectionAllowedCountries"
);
Ok(Unknown(v.to_owned()))
}
}
}
}
impl std::fmt::Display for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[cfg(not(feature = "redact-generated-debug"))]
impl std::fmt::Debug for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[cfg(feature = "redact-generated-debug")]
impl std::fmt::Debug for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct(stringify!(PaymentLinksResourceShippingAddressCollectionAllowedCountries))
.finish_non_exhaustive()
}
}
#[cfg(feature = "serialize")]
impl serde::Serialize for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl miniserde::Deserialize for PaymentLinksResourceShippingAddressCollectionAllowedCountries {
fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
crate::Place::new(out)
}
}
impl miniserde::de::Visitor
for crate::Place<PaymentLinksResourceShippingAddressCollectionAllowedCountries>
{
fn string(&mut self, s: &str) -> miniserde::Result<()> {
use std::str::FromStr;
self.out = Some(
PaymentLinksResourceShippingAddressCollectionAllowedCountries::from_str(s)
.expect("infallible"),
);
Ok(())
}
}
stripe_types::impl_from_val_with_from_str!(
PaymentLinksResourceShippingAddressCollectionAllowedCountries
);
#[cfg(feature = "deserialize")]
impl<'de> serde::Deserialize<'de>
for PaymentLinksResourceShippingAddressCollectionAllowedCountries
{
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
use std::str::FromStr;
let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
Ok(Self::from_str(&s).expect("infallible"))
}
}