stripe_terminal/
terminal_configuration_configuration_resource_tipping.rs

1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct TerminalConfigurationConfigurationResourceTipping {
5    pub aed:
6        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
7    pub aud:
8        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
9    pub bgn:
10        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
11    pub cad:
12        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
13    pub chf:
14        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
15    pub czk:
16        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
17    pub dkk:
18        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
19    pub eur:
20        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
21    pub gbp:
22        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
23    pub hkd:
24        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
25    pub huf:
26        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
27    pub jpy:
28        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
29    pub mxn:
30        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
31    pub myr:
32        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
33    pub nok:
34        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
35    pub nzd:
36        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
37    pub pln:
38        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
39    pub ron:
40        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
41    pub sek:
42        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
43    pub sgd:
44        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
45    pub usd:
46        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
47}
48#[doc(hidden)]
49pub struct TerminalConfigurationConfigurationResourceTippingBuilder {
50    aed: Option<
51        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
52    >,
53    aud: Option<
54        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
55    >,
56    bgn: Option<
57        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
58    >,
59    cad: Option<
60        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
61    >,
62    chf: Option<
63        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
64    >,
65    czk: Option<
66        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
67    >,
68    dkk: Option<
69        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
70    >,
71    eur: Option<
72        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
73    >,
74    gbp: Option<
75        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
76    >,
77    hkd: Option<
78        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
79    >,
80    huf: Option<
81        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
82    >,
83    jpy: Option<
84        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
85    >,
86    mxn: Option<
87        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
88    >,
89    myr: Option<
90        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
91    >,
92    nok: Option<
93        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
94    >,
95    nzd: Option<
96        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
97    >,
98    pln: Option<
99        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
100    >,
101    ron: Option<
102        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
103    >,
104    sek: Option<
105        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
106    >,
107    sgd: Option<
108        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
109    >,
110    usd: Option<
111        Option<stripe_terminal::TerminalConfigurationConfigurationResourceCurrencySpecificConfig>,
112    >,
113}
114
115#[allow(
116    unused_variables,
117    irrefutable_let_patterns,
118    clippy::let_unit_value,
119    clippy::match_single_binding,
120    clippy::single_match
121)]
122const _: () = {
123    use miniserde::de::{Map, Visitor};
124    use miniserde::json::Value;
125    use miniserde::{Deserialize, Result, make_place};
126    use stripe_types::miniserde_helpers::FromValueOpt;
127    use stripe_types::{MapBuilder, ObjectDeser};
128
129    make_place!(Place);
130
131    impl Deserialize for TerminalConfigurationConfigurationResourceTipping {
132        fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
133            Place::new(out)
134        }
135    }
136
137    struct Builder<'a> {
138        out: &'a mut Option<TerminalConfigurationConfigurationResourceTipping>,
139        builder: TerminalConfigurationConfigurationResourceTippingBuilder,
140    }
141
142    impl Visitor for Place<TerminalConfigurationConfigurationResourceTipping> {
143        fn map(&mut self) -> Result<Box<dyn Map + '_>> {
144            Ok(Box::new(Builder {
145                out: &mut self.out,
146                builder: TerminalConfigurationConfigurationResourceTippingBuilder::deser_default(),
147            }))
148        }
149    }
150
151    impl MapBuilder for TerminalConfigurationConfigurationResourceTippingBuilder {
152        type Out = TerminalConfigurationConfigurationResourceTipping;
153        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
154            Ok(match k {
155                "aed" => Deserialize::begin(&mut self.aed),
156                "aud" => Deserialize::begin(&mut self.aud),
157                "bgn" => Deserialize::begin(&mut self.bgn),
158                "cad" => Deserialize::begin(&mut self.cad),
159                "chf" => Deserialize::begin(&mut self.chf),
160                "czk" => Deserialize::begin(&mut self.czk),
161                "dkk" => Deserialize::begin(&mut self.dkk),
162                "eur" => Deserialize::begin(&mut self.eur),
163                "gbp" => Deserialize::begin(&mut self.gbp),
164                "hkd" => Deserialize::begin(&mut self.hkd),
165                "huf" => Deserialize::begin(&mut self.huf),
166                "jpy" => Deserialize::begin(&mut self.jpy),
167                "mxn" => Deserialize::begin(&mut self.mxn),
168                "myr" => Deserialize::begin(&mut self.myr),
169                "nok" => Deserialize::begin(&mut self.nok),
170                "nzd" => Deserialize::begin(&mut self.nzd),
171                "pln" => Deserialize::begin(&mut self.pln),
172                "ron" => Deserialize::begin(&mut self.ron),
173                "sek" => Deserialize::begin(&mut self.sek),
174                "sgd" => Deserialize::begin(&mut self.sgd),
175                "usd" => Deserialize::begin(&mut self.usd),
176
177                _ => <dyn Visitor>::ignore(),
178            })
179        }
180
181        fn deser_default() -> Self {
182            Self {
183                aed: Deserialize::default(),
184                aud: Deserialize::default(),
185                bgn: Deserialize::default(),
186                cad: Deserialize::default(),
187                chf: Deserialize::default(),
188                czk: Deserialize::default(),
189                dkk: Deserialize::default(),
190                eur: Deserialize::default(),
191                gbp: Deserialize::default(),
192                hkd: Deserialize::default(),
193                huf: Deserialize::default(),
194                jpy: Deserialize::default(),
195                mxn: Deserialize::default(),
196                myr: Deserialize::default(),
197                nok: Deserialize::default(),
198                nzd: Deserialize::default(),
199                pln: Deserialize::default(),
200                ron: Deserialize::default(),
201                sek: Deserialize::default(),
202                sgd: Deserialize::default(),
203                usd: Deserialize::default(),
204            }
205        }
206
207        fn take_out(&mut self) -> Option<Self::Out> {
208            let (
209                Some(aed),
210                Some(aud),
211                Some(bgn),
212                Some(cad),
213                Some(chf),
214                Some(czk),
215                Some(dkk),
216                Some(eur),
217                Some(gbp),
218                Some(hkd),
219                Some(huf),
220                Some(jpy),
221                Some(mxn),
222                Some(myr),
223                Some(nok),
224                Some(nzd),
225                Some(pln),
226                Some(ron),
227                Some(sek),
228                Some(sgd),
229                Some(usd),
230            ) = (
231                self.aed.take(),
232                self.aud.take(),
233                self.bgn.take(),
234                self.cad.take(),
235                self.chf.take(),
236                self.czk.take(),
237                self.dkk.take(),
238                self.eur.take(),
239                self.gbp.take(),
240                self.hkd.take(),
241                self.huf.take(),
242                self.jpy.take(),
243                self.mxn.take(),
244                self.myr.take(),
245                self.nok.take(),
246                self.nzd.take(),
247                self.pln.take(),
248                self.ron.take(),
249                self.sek.take(),
250                self.sgd.take(),
251                self.usd.take(),
252            )
253            else {
254                return None;
255            };
256            Some(Self::Out {
257                aed,
258                aud,
259                bgn,
260                cad,
261                chf,
262                czk,
263                dkk,
264                eur,
265                gbp,
266                hkd,
267                huf,
268                jpy,
269                mxn,
270                myr,
271                nok,
272                nzd,
273                pln,
274                ron,
275                sek,
276                sgd,
277                usd,
278            })
279        }
280    }
281
282    impl Map for Builder<'_> {
283        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
284            self.builder.key(k)
285        }
286
287        fn finish(&mut self) -> Result<()> {
288            *self.out = self.builder.take_out();
289            Ok(())
290        }
291    }
292
293    impl ObjectDeser for TerminalConfigurationConfigurationResourceTipping {
294        type Builder = TerminalConfigurationConfigurationResourceTippingBuilder;
295    }
296
297    impl FromValueOpt for TerminalConfigurationConfigurationResourceTipping {
298        fn from_value(v: Value) -> Option<Self> {
299            let Value::Object(obj) = v else {
300                return None;
301            };
302            let mut b = TerminalConfigurationConfigurationResourceTippingBuilder::deser_default();
303            for (k, v) in obj {
304                match k.as_str() {
305                    "aed" => b.aed = FromValueOpt::from_value(v),
306                    "aud" => b.aud = FromValueOpt::from_value(v),
307                    "bgn" => b.bgn = FromValueOpt::from_value(v),
308                    "cad" => b.cad = FromValueOpt::from_value(v),
309                    "chf" => b.chf = FromValueOpt::from_value(v),
310                    "czk" => b.czk = FromValueOpt::from_value(v),
311                    "dkk" => b.dkk = FromValueOpt::from_value(v),
312                    "eur" => b.eur = FromValueOpt::from_value(v),
313                    "gbp" => b.gbp = FromValueOpt::from_value(v),
314                    "hkd" => b.hkd = FromValueOpt::from_value(v),
315                    "huf" => b.huf = FromValueOpt::from_value(v),
316                    "jpy" => b.jpy = FromValueOpt::from_value(v),
317                    "mxn" => b.mxn = FromValueOpt::from_value(v),
318                    "myr" => b.myr = FromValueOpt::from_value(v),
319                    "nok" => b.nok = FromValueOpt::from_value(v),
320                    "nzd" => b.nzd = FromValueOpt::from_value(v),
321                    "pln" => b.pln = FromValueOpt::from_value(v),
322                    "ron" => b.ron = FromValueOpt::from_value(v),
323                    "sek" => b.sek = FromValueOpt::from_value(v),
324                    "sgd" => b.sgd = FromValueOpt::from_value(v),
325                    "usd" => b.usd = FromValueOpt::from_value(v),
326
327                    _ => {}
328                }
329            }
330            b.take_out()
331        }
332    }
333};