Skip to main content

bo4e_core/enums/
currency.rs

1//! Currency code (Waehrungscode) enumeration.
2
3use serde::{Deserialize, Serialize};
4
5/// ISO 4217 currency codes.
6///
7/// Enumeration of currency codes following ISO 4217 standard.
8///
9/// German: Waehrungscode
10#[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    /// UAE Dirham
16    #[serde(rename = "AED")]
17    Aed,
18    /// Afghani
19    #[serde(rename = "AFN")]
20    Afn,
21    /// Lek
22    #[serde(rename = "ALL")]
23    All,
24    /// Armenian Dram
25    #[serde(rename = "AMD")]
26    Amd,
27    /// Netherlands Antillean Guilder
28    #[serde(rename = "ANG")]
29    Ang,
30    /// Kwanza
31    #[serde(rename = "AOA")]
32    Aoa,
33    /// Argentine Peso
34    #[serde(rename = "ARS")]
35    Ars,
36    /// Australian Dollar
37    #[serde(rename = "AUD")]
38    Aud,
39    /// Aruban Florin
40    #[serde(rename = "AWG")]
41    Awg,
42    /// Azerbaijanian Manat
43    #[serde(rename = "AZN")]
44    Azn,
45    /// Convertible Mark
46    #[serde(rename = "BAM")]
47    Bam,
48    /// Barbados Dollar
49    #[serde(rename = "BBD")]
50    Bbd,
51    /// Taka
52    #[serde(rename = "BDT")]
53    Bdt,
54    /// Bulgarian Lev
55    #[serde(rename = "BGN")]
56    Bgn,
57    /// Bahraini Dinar
58    #[serde(rename = "BHD")]
59    Bhd,
60    /// Burundi Franc
61    #[serde(rename = "BIF")]
62    Bif,
63    /// Bermudian Dollar
64    #[serde(rename = "BMD")]
65    Bmd,
66    /// Brunei Dollar
67    #[serde(rename = "BND")]
68    Bnd,
69    /// Boliviano
70    #[serde(rename = "BOB")]
71    Bob,
72    /// Mvdol
73    #[serde(rename = "BOV")]
74    Bov,
75    /// Brazilian Real
76    #[serde(rename = "BRL")]
77    Brl,
78    /// Bahamian Dollar
79    #[serde(rename = "BSD")]
80    Bsd,
81    /// Ngultrum
82    #[serde(rename = "BTN")]
83    Btn,
84    /// Pula
85    #[serde(rename = "BWP")]
86    Bwp,
87    /// Belarusian Ruble
88    #[serde(rename = "BYN")]
89    Byn,
90    /// Belarusian Ruble (old)
91    #[serde(rename = "BYR")]
92    Byr,
93    /// Belize Dollar
94    #[serde(rename = "BZD")]
95    Bzd,
96    /// Canadian Dollar
97    #[serde(rename = "CAD")]
98    Cad,
99    /// Congolese Franc
100    #[serde(rename = "CDF")]
101    Cdf,
102    /// WIR Euro
103    #[serde(rename = "CHE")]
104    Che,
105    /// Swiss Franc
106    #[serde(rename = "CHF")]
107    Chf,
108    /// WIR Franc
109    #[serde(rename = "CHW")]
110    Chw,
111    /// Unidad de Fomento
112    #[serde(rename = "CLF")]
113    Clf,
114    /// Chilean Peso
115    #[serde(rename = "CLP")]
116    Clp,
117    /// Yuan Renminbi
118    #[serde(rename = "CNY")]
119    Cny,
120    /// Colombian Peso
121    #[serde(rename = "COP")]
122    Cop,
123    /// Unidad de Valor Real
124    #[serde(rename = "COU")]
125    Cou,
126    /// Costa Rican Colon
127    #[serde(rename = "CRC")]
128    Crc,
129    /// Peso Convertible
130    #[serde(rename = "CUC")]
131    Cuc,
132    /// Cuban Peso
133    #[serde(rename = "CUP")]
134    Cup,
135    /// Cape Verde Escudo
136    #[serde(rename = "CVE")]
137    Cve,
138    /// Czech Koruna
139    #[serde(rename = "CZK")]
140    Czk,
141    /// Djibouti Franc
142    #[serde(rename = "DJF")]
143    Djf,
144    /// Danish Krone
145    #[serde(rename = "DKK")]
146    Dkk,
147    /// Dominican Peso
148    #[serde(rename = "DOP")]
149    Dop,
150    /// Algerian Dinar
151    #[serde(rename = "DZD")]
152    Dzd,
153    /// Egyptian Pound
154    #[serde(rename = "EGP")]
155    Egp,
156    /// Nakfa
157    #[serde(rename = "ERN")]
158    Ern,
159    /// Ethiopian Birr
160    #[serde(rename = "ETB")]
161    Etb,
162    /// Euro
163    #[serde(rename = "EUR")]
164    Eur,
165    /// Fiji Dollar
166    #[serde(rename = "FJD")]
167    Fjd,
168    /// Falkland Islands Pound
169    #[serde(rename = "FKP")]
170    Fkp,
171    /// Pound Sterling
172    #[serde(rename = "GBP")]
173    Gbp,
174    /// Lari
175    #[serde(rename = "GEL")]
176    Gel,
177    /// Ghana Cedi
178    #[serde(rename = "GHS")]
179    Ghs,
180    /// Gibraltar Pound
181    #[serde(rename = "GIP")]
182    Gip,
183    /// Dalasi
184    #[serde(rename = "GMD")]
185    Gmd,
186    /// Guinea Franc
187    #[serde(rename = "GNF")]
188    Gnf,
189    /// Quetzal
190    #[serde(rename = "GTQ")]
191    Gtq,
192    /// Guyana Dollar
193    #[serde(rename = "GYD")]
194    Gyd,
195    /// Hong Kong Dollar
196    #[serde(rename = "HKD")]
197    Hkd,
198    /// Lempira
199    #[serde(rename = "HNL")]
200    Hnl,
201    /// Croatian Kuna
202    #[serde(rename = "HRK")]
203    Hrk,
204    /// Gourde
205    #[serde(rename = "HTG")]
206    Htg,
207    /// Forint
208    #[serde(rename = "HUF")]
209    Huf,
210    /// Rupiah
211    #[serde(rename = "IDR")]
212    Idr,
213    /// New Israeli Sheqel
214    #[serde(rename = "ILS")]
215    Ils,
216    /// Indian Rupee
217    #[serde(rename = "INR")]
218    Inr,
219    /// Iraqi Dinar
220    #[serde(rename = "IQD")]
221    Iqd,
222    /// Iranian Rial
223    #[serde(rename = "IRR")]
224    Irr,
225    /// Iceland Krona
226    #[serde(rename = "ISK")]
227    Isk,
228    /// Jamaican Dollar
229    #[serde(rename = "JMD")]
230    Jmd,
231    /// Jordanian Dinar
232    #[serde(rename = "JOD")]
233    Jod,
234    /// Yen
235    #[serde(rename = "JPY")]
236    Jpy,
237    /// Kenyan Shilling
238    #[serde(rename = "KES")]
239    Kes,
240    /// Som
241    #[serde(rename = "KGS")]
242    Kgs,
243    /// Riel
244    #[serde(rename = "KHR")]
245    Khr,
246    /// Comoro Franc
247    #[serde(rename = "KMF")]
248    Kmf,
249    /// North Korean Won
250    #[serde(rename = "KPW")]
251    Kpw,
252    /// Won
253    #[serde(rename = "KRW")]
254    Krw,
255    /// Kuwaiti Dinar
256    #[serde(rename = "KWD")]
257    Kwd,
258    /// Cayman Islands Dollar
259    #[serde(rename = "KYD")]
260    Kyd,
261    /// Tenge
262    #[serde(rename = "KZT")]
263    Kzt,
264    /// Kip
265    #[serde(rename = "LAK")]
266    Lak,
267    /// Lebanese Pound
268    #[serde(rename = "LBP")]
269    Lbp,
270    /// Sri Lanka Rupee
271    #[serde(rename = "LKR")]
272    Lkr,
273    /// Liberian Dollar
274    #[serde(rename = "LRD")]
275    Lrd,
276    /// Loti
277    #[serde(rename = "LSL")]
278    Lsl,
279    /// Lithuanian Litas
280    #[serde(rename = "LTL")]
281    Ltl,
282    /// Libyan Dinar
283    #[serde(rename = "LYD")]
284    Lyd,
285    /// Moroccan Dirham
286    #[serde(rename = "MAD")]
287    Mad,
288    /// Moldovan Leu
289    #[serde(rename = "MDL")]
290    Mdl,
291    /// Malagasy Ariary
292    #[serde(rename = "MGA")]
293    Mga,
294    /// Denar
295    #[serde(rename = "MKD")]
296    Mkd,
297    /// Kyat
298    #[serde(rename = "MMK")]
299    Mmk,
300    /// Tugrik
301    #[serde(rename = "MNT")]
302    Mnt,
303    /// Pataca
304    #[serde(rename = "MOP")]
305    Mop,
306    /// Ouguiya
307    #[serde(rename = "MRO")]
308    Mro,
309    /// Mauritius Rupee
310    #[serde(rename = "MUR")]
311    Mur,
312    /// Rufiyaa
313    #[serde(rename = "MVR")]
314    Mvr,
315    /// Kwacha
316    #[serde(rename = "MWK")]
317    Mwk,
318    /// Mexican Peso
319    #[serde(rename = "MXN")]
320    Mxn,
321    /// Mexican Unidad de Inversion (UDI)
322    #[serde(rename = "MXV")]
323    Mxv,
324    /// Malaysian Ringgit
325    #[serde(rename = "MYR")]
326    Myr,
327    /// Mozambique Metical
328    #[serde(rename = "MZN")]
329    Mzn,
330    /// Namibia Dollar
331    #[serde(rename = "NAD")]
332    Nad,
333    /// Naira
334    #[serde(rename = "NGN")]
335    Ngn,
336    /// Cordoba Oro
337    #[serde(rename = "NIO")]
338    Nio,
339    /// Norwegian Krone
340    #[serde(rename = "NOK")]
341    Nok,
342    /// Nepalese Rupee
343    #[serde(rename = "NPR")]
344    Npr,
345    /// New Zealand Dollar
346    #[serde(rename = "NZD")]
347    Nzd,
348    /// Rial Omani
349    #[serde(rename = "OMR")]
350    Omr,
351    /// Balboa
352    #[serde(rename = "PAB")]
353    Pab,
354    /// Nuevo Sol
355    #[serde(rename = "PEN")]
356    Pen,
357    /// Kina
358    #[serde(rename = "PGK")]
359    Pgk,
360    /// Philippine Peso
361    #[serde(rename = "PHP")]
362    Php,
363    /// Pakistan Rupee
364    #[serde(rename = "PKR")]
365    Pkr,
366    /// Zloty
367    #[serde(rename = "PLN")]
368    Pln,
369    /// Guarani
370    #[serde(rename = "PYG")]
371    Pyg,
372    /// Qatari Rial
373    #[serde(rename = "QAR")]
374    Qar,
375    /// New Romanian Leu
376    #[serde(rename = "RON")]
377    Ron,
378    /// Serbian Dinar
379    #[serde(rename = "RSD")]
380    Rsd,
381    /// Russian Ruble
382    #[serde(rename = "RUB")]
383    Rub,
384    /// Russian Ruble (old)
385    #[serde(rename = "RUR")]
386    Rur,
387    /// Rwanda Franc
388    #[serde(rename = "RWF")]
389    Rwf,
390    /// Saudi Riyal
391    #[serde(rename = "SAR")]
392    Sar,
393    /// Solomon Islands Dollar
394    #[serde(rename = "SBD")]
395    Sbd,
396    /// Seychelles Rupee
397    #[serde(rename = "SCR")]
398    Scr,
399    /// Sudanese Pound
400    #[serde(rename = "SDG")]
401    Sdg,
402    /// Swedish Krona
403    #[serde(rename = "SEK")]
404    Sek,
405    /// Singapore Dollar
406    #[serde(rename = "SGD")]
407    Sgd,
408    /// Saint Helena Pound
409    #[serde(rename = "SHP")]
410    Shp,
411    /// Leone
412    #[serde(rename = "SLL")]
413    Sll,
414    /// Somali Shilling
415    #[serde(rename = "SOS")]
416    Sos,
417    /// Surinam Dollar
418    #[serde(rename = "SRD")]
419    Srd,
420    /// South Sudanese Pound
421    #[serde(rename = "SSP")]
422    Ssp,
423    /// Dobra
424    #[serde(rename = "STD")]
425    Std,
426    /// El Salvador Colon
427    #[serde(rename = "SVC")]
428    Svc,
429    /// Syrian Pound
430    #[serde(rename = "SYP")]
431    Syp,
432    /// Lilangeni
433    #[serde(rename = "SZL")]
434    Szl,
435    /// Baht
436    #[serde(rename = "THB")]
437    Thb,
438    /// Somoni
439    #[serde(rename = "TJS")]
440    Tjs,
441    /// Turkmenistan New Manat
442    #[serde(rename = "TMT")]
443    Tmt,
444    /// Tunisian Dinar
445    #[serde(rename = "TND")]
446    Tnd,
447    /// Pa'anga
448    #[serde(rename = "TOP")]
449    Top,
450    /// Turkish Lira
451    #[serde(rename = "TRY")]
452    Try,
453    /// Trinidad and Tobago Dollar
454    #[serde(rename = "TTD")]
455    Ttd,
456    /// New Taiwan Dollar
457    #[serde(rename = "TWD")]
458    Twd,
459    /// Tanzanian Shilling
460    #[serde(rename = "TZS")]
461    Tzs,
462    /// Hryvnia
463    #[serde(rename = "UAH")]
464    Uah,
465    /// Uganda Shilling
466    #[serde(rename = "UGX")]
467    Ugx,
468    /// US Dollar
469    #[serde(rename = "USD")]
470    Usd,
471    /// US Dollar (Next day)
472    #[serde(rename = "USN")]
473    Usn,
474    /// US Dollar (Same day)
475    #[serde(rename = "USS")]
476    Uss,
477    /// Uruguay Peso en Unidades Indexadas
478    #[serde(rename = "UYI")]
479    Uyi,
480    /// Peso Uruguayo
481    #[serde(rename = "UYU")]
482    Uyu,
483    /// Uzbekistan Sum
484    #[serde(rename = "UZS")]
485    Uzs,
486    /// Bolivar
487    #[serde(rename = "VEF")]
488    Vef,
489    /// Dong
490    #[serde(rename = "VND")]
491    Vnd,
492    /// Vatu
493    #[serde(rename = "VUV")]
494    Vuv,
495    /// Tala
496    #[serde(rename = "WST")]
497    Wst,
498    /// CFA Franc BEAC
499    #[serde(rename = "XAF")]
500    Xaf,
501    /// Silver
502    #[serde(rename = "XAG")]
503    Xag,
504    /// Gold
505    #[serde(rename = "XAU")]
506    Xau,
507    /// Bond Markets Unit European Composite Unit (EURCO)
508    #[serde(rename = "XBA")]
509    Xba,
510    /// Bond Markets Unit European Monetary Unit (E.M.U.-6)
511    #[serde(rename = "XBB")]
512    Xbb,
513    /// Bond Markets Unit European Unit of Account 9 (E.U.A.-9)
514    #[serde(rename = "XBC")]
515    Xbc,
516    /// Bond Markets Unit European Unit of Account 17 (E.U.A.-17)
517    #[serde(rename = "XBD")]
518    Xbd,
519    /// East Caribbean Dollar
520    #[serde(rename = "XCD")]
521    Xcd,
522    /// SDR (Special Drawing Right)
523    #[serde(rename = "XDR")]
524    Xdr,
525    /// CFA Franc BCEAO
526    #[serde(rename = "XOF")]
527    Xof,
528    /// Palladium
529    #[serde(rename = "XPD")]
530    Xpd,
531    /// CFP Franc
532    #[serde(rename = "XPF")]
533    Xpf,
534    /// Platinum
535    #[serde(rename = "XPT")]
536    Xpt,
537    /// Sucre
538    #[serde(rename = "XSU")]
539    Xsu,
540    /// Codes specifically reserved for testing purposes
541    #[serde(rename = "XTS")]
542    Xts,
543    /// ADB Unit of Account
544    #[serde(rename = "XUA")]
545    Xua,
546    /// No currency
547    #[serde(rename = "XXX")]
548    Xxx,
549    /// Yemeni Rial
550    #[serde(rename = "YER")]
551    Yer,
552    /// Rand
553    #[serde(rename = "ZAR")]
554    Zar,
555    /// Zambian Kwacha
556    #[serde(rename = "ZMW")]
557    Zmw,
558    /// Zimbabwe Dollar
559    #[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}