1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
12#[cfg_attr(feature = "json-schema", schemars(rename = "Waehrungscode"))]
13#[non_exhaustive]
14pub enum Currency {
15 #[serde(rename = "AED")]
17 Aed,
18 #[serde(rename = "AFN")]
20 Afn,
21 #[serde(rename = "ALL")]
23 All,
24 #[serde(rename = "AMD")]
26 Amd,
27 #[serde(rename = "ANG")]
29 Ang,
30 #[serde(rename = "AOA")]
32 Aoa,
33 #[serde(rename = "ARS")]
35 Ars,
36 #[serde(rename = "AUD")]
38 Aud,
39 #[serde(rename = "AWG")]
41 Awg,
42 #[serde(rename = "AZN")]
44 Azn,
45 #[serde(rename = "BAM")]
47 Bam,
48 #[serde(rename = "BBD")]
50 Bbd,
51 #[serde(rename = "BDT")]
53 Bdt,
54 #[serde(rename = "BGN")]
56 Bgn,
57 #[serde(rename = "BHD")]
59 Bhd,
60 #[serde(rename = "BIF")]
62 Bif,
63 #[serde(rename = "BMD")]
65 Bmd,
66 #[serde(rename = "BND")]
68 Bnd,
69 #[serde(rename = "BOB")]
71 Bob,
72 #[serde(rename = "BOV")]
74 Bov,
75 #[serde(rename = "BRL")]
77 Brl,
78 #[serde(rename = "BSD")]
80 Bsd,
81 #[serde(rename = "BTN")]
83 Btn,
84 #[serde(rename = "BWP")]
86 Bwp,
87 #[serde(rename = "BYN")]
89 Byn,
90 #[serde(rename = "BYR")]
92 Byr,
93 #[serde(rename = "BZD")]
95 Bzd,
96 #[serde(rename = "CAD")]
98 Cad,
99 #[serde(rename = "CDF")]
101 Cdf,
102 #[serde(rename = "CHE")]
104 Che,
105 #[serde(rename = "CHF")]
107 Chf,
108 #[serde(rename = "CHW")]
110 Chw,
111 #[serde(rename = "CLF")]
113 Clf,
114 #[serde(rename = "CLP")]
116 Clp,
117 #[serde(rename = "CNY")]
119 Cny,
120 #[serde(rename = "COP")]
122 Cop,
123 #[serde(rename = "COU")]
125 Cou,
126 #[serde(rename = "CRC")]
128 Crc,
129 #[serde(rename = "CUC")]
131 Cuc,
132 #[serde(rename = "CUP")]
134 Cup,
135 #[serde(rename = "CVE")]
137 Cve,
138 #[serde(rename = "CZK")]
140 Czk,
141 #[serde(rename = "DJF")]
143 Djf,
144 #[serde(rename = "DKK")]
146 Dkk,
147 #[serde(rename = "DOP")]
149 Dop,
150 #[serde(rename = "DZD")]
152 Dzd,
153 #[serde(rename = "EGP")]
155 Egp,
156 #[serde(rename = "ERN")]
158 Ern,
159 #[serde(rename = "ETB")]
161 Etb,
162 #[serde(rename = "EUR")]
164 Eur,
165 #[serde(rename = "FJD")]
167 Fjd,
168 #[serde(rename = "FKP")]
170 Fkp,
171 #[serde(rename = "GBP")]
173 Gbp,
174 #[serde(rename = "GEL")]
176 Gel,
177 #[serde(rename = "GHS")]
179 Ghs,
180 #[serde(rename = "GIP")]
182 Gip,
183 #[serde(rename = "GMD")]
185 Gmd,
186 #[serde(rename = "GNF")]
188 Gnf,
189 #[serde(rename = "GTQ")]
191 Gtq,
192 #[serde(rename = "GYD")]
194 Gyd,
195 #[serde(rename = "HKD")]
197 Hkd,
198 #[serde(rename = "HNL")]
200 Hnl,
201 #[serde(rename = "HRK")]
203 Hrk,
204 #[serde(rename = "HTG")]
206 Htg,
207 #[serde(rename = "HUF")]
209 Huf,
210 #[serde(rename = "IDR")]
212 Idr,
213 #[serde(rename = "ILS")]
215 Ils,
216 #[serde(rename = "INR")]
218 Inr,
219 #[serde(rename = "IQD")]
221 Iqd,
222 #[serde(rename = "IRR")]
224 Irr,
225 #[serde(rename = "ISK")]
227 Isk,
228 #[serde(rename = "JMD")]
230 Jmd,
231 #[serde(rename = "JOD")]
233 Jod,
234 #[serde(rename = "JPY")]
236 Jpy,
237 #[serde(rename = "KES")]
239 Kes,
240 #[serde(rename = "KGS")]
242 Kgs,
243 #[serde(rename = "KHR")]
245 Khr,
246 #[serde(rename = "KMF")]
248 Kmf,
249 #[serde(rename = "KPW")]
251 Kpw,
252 #[serde(rename = "KRW")]
254 Krw,
255 #[serde(rename = "KWD")]
257 Kwd,
258 #[serde(rename = "KYD")]
260 Kyd,
261 #[serde(rename = "KZT")]
263 Kzt,
264 #[serde(rename = "LAK")]
266 Lak,
267 #[serde(rename = "LBP")]
269 Lbp,
270 #[serde(rename = "LKR")]
272 Lkr,
273 #[serde(rename = "LRD")]
275 Lrd,
276 #[serde(rename = "LSL")]
278 Lsl,
279 #[serde(rename = "LTL")]
281 Ltl,
282 #[serde(rename = "LYD")]
284 Lyd,
285 #[serde(rename = "MAD")]
287 Mad,
288 #[serde(rename = "MDL")]
290 Mdl,
291 #[serde(rename = "MGA")]
293 Mga,
294 #[serde(rename = "MKD")]
296 Mkd,
297 #[serde(rename = "MMK")]
299 Mmk,
300 #[serde(rename = "MNT")]
302 Mnt,
303 #[serde(rename = "MOP")]
305 Mop,
306 #[serde(rename = "MRO")]
308 Mro,
309 #[serde(rename = "MUR")]
311 Mur,
312 #[serde(rename = "MVR")]
314 Mvr,
315 #[serde(rename = "MWK")]
317 Mwk,
318 #[serde(rename = "MXN")]
320 Mxn,
321 #[serde(rename = "MXV")]
323 Mxv,
324 #[serde(rename = "MYR")]
326 Myr,
327 #[serde(rename = "MZN")]
329 Mzn,
330 #[serde(rename = "NAD")]
332 Nad,
333 #[serde(rename = "NGN")]
335 Ngn,
336 #[serde(rename = "NIO")]
338 Nio,
339 #[serde(rename = "NOK")]
341 Nok,
342 #[serde(rename = "NPR")]
344 Npr,
345 #[serde(rename = "NZD")]
347 Nzd,
348 #[serde(rename = "OMR")]
350 Omr,
351 #[serde(rename = "PAB")]
353 Pab,
354 #[serde(rename = "PEN")]
356 Pen,
357 #[serde(rename = "PGK")]
359 Pgk,
360 #[serde(rename = "PHP")]
362 Php,
363 #[serde(rename = "PKR")]
365 Pkr,
366 #[serde(rename = "PLN")]
368 Pln,
369 #[serde(rename = "PYG")]
371 Pyg,
372 #[serde(rename = "QAR")]
374 Qar,
375 #[serde(rename = "RON")]
377 Ron,
378 #[serde(rename = "RSD")]
380 Rsd,
381 #[serde(rename = "RUB")]
383 Rub,
384 #[serde(rename = "RUR")]
386 Rur,
387 #[serde(rename = "RWF")]
389 Rwf,
390 #[serde(rename = "SAR")]
392 Sar,
393 #[serde(rename = "SBD")]
395 Sbd,
396 #[serde(rename = "SCR")]
398 Scr,
399 #[serde(rename = "SDG")]
401 Sdg,
402 #[serde(rename = "SEK")]
404 Sek,
405 #[serde(rename = "SGD")]
407 Sgd,
408 #[serde(rename = "SHP")]
410 Shp,
411 #[serde(rename = "SLL")]
413 Sll,
414 #[serde(rename = "SOS")]
416 Sos,
417 #[serde(rename = "SRD")]
419 Srd,
420 #[serde(rename = "SSP")]
422 Ssp,
423 #[serde(rename = "STD")]
425 Std,
426 #[serde(rename = "SVC")]
428 Svc,
429 #[serde(rename = "SYP")]
431 Syp,
432 #[serde(rename = "SZL")]
434 Szl,
435 #[serde(rename = "THB")]
437 Thb,
438 #[serde(rename = "TJS")]
440 Tjs,
441 #[serde(rename = "TMT")]
443 Tmt,
444 #[serde(rename = "TND")]
446 Tnd,
447 #[serde(rename = "TOP")]
449 Top,
450 #[serde(rename = "TRY")]
452 Try,
453 #[serde(rename = "TTD")]
455 Ttd,
456 #[serde(rename = "TWD")]
458 Twd,
459 #[serde(rename = "TZS")]
461 Tzs,
462 #[serde(rename = "UAH")]
464 Uah,
465 #[serde(rename = "UGX")]
467 Ugx,
468 #[serde(rename = "USD")]
470 Usd,
471 #[serde(rename = "USN")]
473 Usn,
474 #[serde(rename = "USS")]
476 Uss,
477 #[serde(rename = "UYI")]
479 Uyi,
480 #[serde(rename = "UYU")]
482 Uyu,
483 #[serde(rename = "UZS")]
485 Uzs,
486 #[serde(rename = "VEF")]
488 Vef,
489 #[serde(rename = "VND")]
491 Vnd,
492 #[serde(rename = "VUV")]
494 Vuv,
495 #[serde(rename = "WST")]
497 Wst,
498 #[serde(rename = "XAF")]
500 Xaf,
501 #[serde(rename = "XAG")]
503 Xag,
504 #[serde(rename = "XAU")]
506 Xau,
507 #[serde(rename = "XBA")]
509 Xba,
510 #[serde(rename = "XBB")]
512 Xbb,
513 #[serde(rename = "XBC")]
515 Xbc,
516 #[serde(rename = "XBD")]
518 Xbd,
519 #[serde(rename = "XCD")]
521 Xcd,
522 #[serde(rename = "XDR")]
524 Xdr,
525 #[serde(rename = "XOF")]
527 Xof,
528 #[serde(rename = "XPD")]
530 Xpd,
531 #[serde(rename = "XPF")]
533 Xpf,
534 #[serde(rename = "XPT")]
536 Xpt,
537 #[serde(rename = "XSU")]
539 Xsu,
540 #[serde(rename = "XTS")]
542 Xts,
543 #[serde(rename = "XUA")]
545 Xua,
546 #[serde(rename = "XXX")]
548 Xxx,
549 #[serde(rename = "YER")]
551 Yer,
552 #[serde(rename = "ZAR")]
554 Zar,
555 #[serde(rename = "ZMW")]
557 Zmw,
558 #[serde(rename = "ZWL")]
560 Zwl,
561}
562
563#[cfg(test)]
564mod tests {
565 use super::*;
566
567 #[test]
568 fn test_serialize() {
569 assert_eq!(serde_json::to_string(&Currency::Eur).unwrap(), r#""EUR""#);
570 assert_eq!(serde_json::to_string(&Currency::Usd).unwrap(), r#""USD""#);
571 }
572
573 #[test]
574 fn test_roundtrip() {
575 for curr in [
576 Currency::Eur,
577 Currency::Usd,
578 Currency::Gbp,
579 Currency::Chf,
580 Currency::Jpy,
581 ] {
582 let json = serde_json::to_string(&curr).unwrap();
583 let parsed: Currency = serde_json::from_str(&json).unwrap();
584 assert_eq!(curr, parsed);
585 }
586 }
587}