easyfix_messages/
currency.rs

1#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
2pub enum Currency {
3    #[default]
4    AED, // United Arab Emirates dirham
5    AFN, // Afghan afghani
6    ALL, // Albanian lek
7    AMD, // Armenian dram
8    ANG, // Netherlands Antillean guilder
9    AOA, // Angolan kwanza
10    ARS, // Argentine peso
11    AUD, // Australian dollar
12    AWG, // Aruban florin
13    AZN, // Azerbaijani manat
14    BAM, // Bosnia and Herzegovina convertible mark
15    BBD, // Barbados dollar
16    BDT, // Bangladeshi taka
17    BGN, // Bulgarian lev
18    BHD, // Bahraini dinar
19    BIF, // Burundian franc
20    BMD, // Bermudian dollar
21    BND, // Brunei dollar
22    BOB, // Boliviano
23    BOV, // Bolivian Mvdol (funds code)
24    BRL, // Brazilian real
25    BSD, // Bahamian dollar
26    BTN, // Bhutanese ngultrum
27    BWP, // Botswana pula
28    BYN, // Belarusian ruble
29    BZD, // Belize dollar
30    CAD, // Canadian dollar
31    CDF, // Congolese franc
32    CHE, // WIR euro (complementary currency)
33    CHF, // Swiss franc
34    CHW, // WIR franc (complementary currency)
35    CLF, // Unidad de Fomento (funds code)
36    CLP, // Chilean peso
37    CNY, // Chinese yuan[8]
38    COP, // Colombian peso
39    COU, // Unidad de Valor Real (UVR) (funds code)[9]
40    CRC, // Costa Rican colon
41    CUC, // Cuban convertible peso
42    CUP, // Cuban peso
43    CVE, // Cape Verdean escudo
44    CZK, // Czech koruna
45    DJF, // Djiboutian franc
46    DKK, // Danish krone
47    DOP, // Dominican peso
48    DZD, // Algerian dinar
49    EGP, // Egyptian pound
50    ERN, // Eritrean nakfa
51    ETB, // Ethiopian birr
52    EUR, // Euro
53    FJD, // Fiji dollar
54    FKP, // Falkland Islands pound
55    GBP, // Pound sterling
56    GEL, // Georgian lari
57    GHS, // Ghanaian cedi
58    GIP, // Gibraltar pound
59    GMD, // Gambian dalasi
60    GNF, // Guinean franc
61    GTQ, // Guatemalan quetzal
62    GYD, // Guyanese dollar
63    HKD, // Hong Kong dollar
64    HNL, // Honduran lempira
65    HRK, // Croatian kuna
66    HTG, // Haitian gourde
67    HUF, // Hungarian forint
68    IDR, // Indonesian rupiah
69    ILS, // Israeli new shekel
70    INR, // Indian rupee
71    IQD, // Iraqi dinar
72    IRR, // Iranian rial
73    ISK, // Icelandic króna (plural: krónur)
74    JMD, // Jamaican dollar
75    JOD, // Jordanian dinar
76    JPY, // Japanese yen
77    KES, // Kenyan shilling
78    KGS, // Kyrgyzstani som
79    KHR, // Cambodian riel
80    KMF, // Comoro franc
81    KPW, // North Korean won
82    KRW, // South Korean won
83    KWD, // Kuwaiti dinar
84    KYD, // Cayman Islands dollar
85    KZT, // Kazakhstani tenge
86    LAK, // Lao kip
87    LBP, // Lebanese pound
88    LKR, // Sri Lankan rupee
89    LRD, // Liberian dollar
90    LSL, // Lesotho loti
91    LYD, // Libyan dinar
92    MAD, // Moroccan dirham
93    MDL, // Moldovan leu
94    MGA, // Malagasy ariary
95    MKD, // Macedonian denar
96    MMK, // Myanmar kyat
97    MNT, // Mongolian tögrög
98    MOP, // Macanese pataca
99    MRU, // Mauritanian ouguiya
100    MUR, // Mauritian rupee
101    MVR, // Maldivian rufiyaa
102    MWK, // Malawian kwacha
103    MXN, // Mexican peso
104    MXV, // Mexican Unidad de Inversion (UDI) (funds code)
105    MYR, // Malaysian ringgit
106    MZN, // Mozambican metical
107    NAD, // Namibian dollar
108    NGN, // Nigerian naira
109    NIO, // Nicaraguan córdoba
110    NOK, // Norwegian krone
111    NPR, // Nepalese rupee
112    NZD, // New Zealand dollar
113    OMR, // Omani rial
114    PAB, // Panamanian balboa
115    PEN, // Peruvian sol
116    PGK, // Papua New Guinean kina
117    PHP, // Philippine peso[13]
118    PKR, // Pakistani rupee
119    PLN, // Polish złoty
120    PYG, // Paraguayan guaraní
121    QAR, // Qatari riyal
122    RON, // Romanian leu
123    RSD, // Serbian dinar
124    RUB, // Russian ruble
125    RWF, // Rwandan franc
126    SAR, // Saudi riyal
127    SBD, // Solomon Islands dollar
128    SCR, // Seychelles rupee
129    SDG, // Sudanese pound
130    SEK, // Swedish krona (plural: kronor)
131    SGD, // Singapore dollar
132    SHP, // Saint Helena pound
133    SLE, // Sierra Leonean leone
134    SOS, // Somali shilling
135    SRD, // Surinamese dollar
136    SSP, // South Sudanese pound
137    STN, // São Tomé and Príncipe dobra
138    SVC, // Salvadoran colón
139    SYP, // Syrian pound
140    SZL, // Swazi lilangeni
141    THB, // Thai baht
142    TJS, // Tajikistani somoni
143    TMT, // Turkmenistan manat
144    TND, // Tunisian dinar
145    TOP, // Tongan paʻanga
146    TRY, // Turkish lira
147    TTD, // Trinidad and Tobago dollar
148    TWD, // New Taiwan dollar
149    TZS, // Tanzanian shilling
150    UAH, // Ukrainian hryvnia
151    UGX, // Ugandan shilling
152    USD, // United States dollar
153    USN, // United States dollar (next day) (funds code)
154    UYI, // Uruguay Peso en Unidades Indexadas (URUIURUI) (funds code)
155    UYU, // Uruguayan peso
156    UYW, // Unidad previsional[15]
157    UZS, // Uzbekistan som
158    VED, // Venezuelan bolívar digital[16]
159    VES, // Venezuelan bolívar soberano[13]
160    VND, // Vietnamese đồng
161    VUV, // Vanuatu vatu
162    WST, // Samoan tala
163    XAF, // CFA franc BEAC
164    XAG, // Silver (one troy ounce)
165    XAU, // Gold (one troy ounce)
166    XBA, // European Composite Unit (EURCO) (bond market unit)
167    XBB, // European Monetary Unit (E.M.U.-6) (bond market unit)
168    XBC, // European Unit of Account 9 (E.U.A.-9) (bond market unit)
169    XBD, // European Unit of Account 17 (E.U.A.-17) (bond market unit)
170    XCD, // East Caribbean dollar
171    XDR, // Special drawing rights
172    XOF, // CFA franc BCEAO
173    XPD, // Palladium (one troy ounce)
174    XPF, // CFP franc (franc Pacifique)
175    XPT, // Platinum (one troy ounce)
176    XSU, // SUCRE
177    XTS, // Code reserved for testing
178    XUA, // ADB Unit of Account
179    XXX, // No currency
180    YER, // Yemeni rial
181    ZAR, // South African rand
182    ZMW, // Zambian kwacha
183    ZWL, // Zimbabwean dollar
184}
185
186impl Currency {
187    pub const fn from_bytes(input: &[u8]) -> Option<Currency> {
188        match input {
189            b"AED" => Some(Currency::AED),
190            b"AFN" => Some(Currency::AFN),
191            b"ALL" => Some(Currency::ALL),
192            b"AMD" => Some(Currency::AMD),
193            b"ANG" => Some(Currency::ANG),
194            b"AOA" => Some(Currency::AOA),
195            b"ARS" => Some(Currency::ARS),
196            b"AUD" => Some(Currency::AUD),
197            b"AWG" => Some(Currency::AWG),
198            b"AZN" => Some(Currency::AZN),
199            b"BAM" => Some(Currency::BAM),
200            b"BBD" => Some(Currency::BBD),
201            b"BDT" => Some(Currency::BDT),
202            b"BGN" => Some(Currency::BGN),
203            b"BHD" => Some(Currency::BHD),
204            b"BIF" => Some(Currency::BIF),
205            b"BMD" => Some(Currency::BMD),
206            b"BND" => Some(Currency::BND),
207            b"BOB" => Some(Currency::BOB),
208            b"BOV" => Some(Currency::BOV),
209            b"BRL" => Some(Currency::BRL),
210            b"BSD" => Some(Currency::BSD),
211            b"BTN" => Some(Currency::BTN),
212            b"BWP" => Some(Currency::BWP),
213            b"BYN" => Some(Currency::BYN),
214            b"BZD" => Some(Currency::BZD),
215            b"CAD" => Some(Currency::CAD),
216            b"CDF" => Some(Currency::CDF),
217            b"CHE" => Some(Currency::CHE),
218            b"CHF" => Some(Currency::CHF),
219            b"CHW" => Some(Currency::CHW),
220            b"CLF" => Some(Currency::CLF),
221            b"CLP" => Some(Currency::CLP),
222            b"CNY" => Some(Currency::CNY),
223            b"COP" => Some(Currency::COP),
224            b"COU" => Some(Currency::COU),
225            b"CRC" => Some(Currency::CRC),
226            b"CUC" => Some(Currency::CUC),
227            b"CUP" => Some(Currency::CUP),
228            b"CVE" => Some(Currency::CVE),
229            b"CZK" => Some(Currency::CZK),
230            b"DJF" => Some(Currency::DJF),
231            b"DKK" => Some(Currency::DKK),
232            b"DOP" => Some(Currency::DOP),
233            b"DZD" => Some(Currency::DZD),
234            b"EGP" => Some(Currency::EGP),
235            b"ERN" => Some(Currency::ERN),
236            b"ETB" => Some(Currency::ETB),
237            b"EUR" => Some(Currency::EUR),
238            b"FJD" => Some(Currency::FJD),
239            b"FKP" => Some(Currency::FKP),
240            b"GBP" => Some(Currency::GBP),
241            b"GEL" => Some(Currency::GEL),
242            b"GHS" => Some(Currency::GHS),
243            b"GIP" => Some(Currency::GIP),
244            b"GMD" => Some(Currency::GMD),
245            b"GNF" => Some(Currency::GNF),
246            b"GTQ" => Some(Currency::GTQ),
247            b"GYD" => Some(Currency::GYD),
248            b"HKD" => Some(Currency::HKD),
249            b"HNL" => Some(Currency::HNL),
250            b"HRK" => Some(Currency::HRK),
251            b"HTG" => Some(Currency::HTG),
252            b"HUF" => Some(Currency::HUF),
253            b"IDR" => Some(Currency::IDR),
254            b"ILS" => Some(Currency::ILS),
255            b"INR" => Some(Currency::INR),
256            b"IQD" => Some(Currency::IQD),
257            b"IRR" => Some(Currency::IRR),
258            b"ISK" => Some(Currency::ISK),
259            b"JMD" => Some(Currency::JMD),
260            b"JOD" => Some(Currency::JOD),
261            b"JPY" => Some(Currency::JPY),
262            b"KES" => Some(Currency::KES),
263            b"KGS" => Some(Currency::KGS),
264            b"KHR" => Some(Currency::KHR),
265            b"KMF" => Some(Currency::KMF),
266            b"KPW" => Some(Currency::KPW),
267            b"KRW" => Some(Currency::KRW),
268            b"KWD" => Some(Currency::KWD),
269            b"KYD" => Some(Currency::KYD),
270            b"KZT" => Some(Currency::KZT),
271            b"LAK" => Some(Currency::LAK),
272            b"LBP" => Some(Currency::LBP),
273            b"LKR" => Some(Currency::LKR),
274            b"LRD" => Some(Currency::LRD),
275            b"LSL" => Some(Currency::LSL),
276            b"LYD" => Some(Currency::LYD),
277            b"MAD" => Some(Currency::MAD),
278            b"MDL" => Some(Currency::MDL),
279            b"MGA" => Some(Currency::MGA),
280            b"MKD" => Some(Currency::MKD),
281            b"MMK" => Some(Currency::MMK),
282            b"MNT" => Some(Currency::MNT),
283            b"MOP" => Some(Currency::MOP),
284            b"MRU" => Some(Currency::MRU),
285            b"MUR" => Some(Currency::MUR),
286            b"MVR" => Some(Currency::MVR),
287            b"MWK" => Some(Currency::MWK),
288            b"MXN" => Some(Currency::MXN),
289            b"MXV" => Some(Currency::MXV),
290            b"MYR" => Some(Currency::MYR),
291            b"MZN" => Some(Currency::MZN),
292            b"NAD" => Some(Currency::NAD),
293            b"NGN" => Some(Currency::NGN),
294            b"NIO" => Some(Currency::NIO),
295            b"NOK" => Some(Currency::NOK),
296            b"NPR" => Some(Currency::NPR),
297            b"NZD" => Some(Currency::NZD),
298            b"OMR" => Some(Currency::OMR),
299            b"PAB" => Some(Currency::PAB),
300            b"PEN" => Some(Currency::PEN),
301            b"PGK" => Some(Currency::PGK),
302            b"PHP" => Some(Currency::PHP),
303            b"PKR" => Some(Currency::PKR),
304            b"PLN" => Some(Currency::PLN),
305            b"PYG" => Some(Currency::PYG),
306            b"QAR" => Some(Currency::QAR),
307            b"RON" => Some(Currency::RON),
308            b"RSD" => Some(Currency::RSD),
309            b"RUB" => Some(Currency::RUB),
310            b"RWF" => Some(Currency::RWF),
311            b"SAR" => Some(Currency::SAR),
312            b"SBD" => Some(Currency::SBD),
313            b"SCR" => Some(Currency::SCR),
314            b"SDG" => Some(Currency::SDG),
315            b"SEK" => Some(Currency::SEK),
316            b"SGD" => Some(Currency::SGD),
317            b"SHP" => Some(Currency::SHP),
318            b"SLE" => Some(Currency::SLE),
319            b"SOS" => Some(Currency::SOS),
320            b"SRD" => Some(Currency::SRD),
321            b"SSP" => Some(Currency::SSP),
322            b"STN" => Some(Currency::STN),
323            b"SVC" => Some(Currency::SVC),
324            b"SYP" => Some(Currency::SYP),
325            b"SZL" => Some(Currency::SZL),
326            b"THB" => Some(Currency::THB),
327            b"TJS" => Some(Currency::TJS),
328            b"TMT" => Some(Currency::TMT),
329            b"TND" => Some(Currency::TND),
330            b"TOP" => Some(Currency::TOP),
331            b"TRY" => Some(Currency::TRY),
332            b"TTD" => Some(Currency::TTD),
333            b"TWD" => Some(Currency::TWD),
334            b"TZS" => Some(Currency::TZS),
335            b"UAH" => Some(Currency::UAH),
336            b"UGX" => Some(Currency::UGX),
337            b"USD" => Some(Currency::USD),
338            b"USN" => Some(Currency::USN),
339            b"UYI" => Some(Currency::UYI),
340            b"UYU" => Some(Currency::UYU),
341            b"UYW" => Some(Currency::UYW),
342            b"UZS" => Some(Currency::UZS),
343            b"VED" => Some(Currency::VED),
344            b"VES" => Some(Currency::VES),
345            b"VND" => Some(Currency::VND),
346            b"VUV" => Some(Currency::VUV),
347            b"WST" => Some(Currency::WST),
348            b"XAF" => Some(Currency::XAF),
349            b"XAG" => Some(Currency::XAG),
350            b"XAU" => Some(Currency::XAU),
351            b"XBA" => Some(Currency::XBA),
352            b"XBB" => Some(Currency::XBB),
353            b"XBC" => Some(Currency::XBC),
354            b"XBD" => Some(Currency::XBD),
355            b"XCD" => Some(Currency::XCD),
356            b"XDR" => Some(Currency::XDR),
357            b"XOF" => Some(Currency::XOF),
358            b"XPD" => Some(Currency::XPD),
359            b"XPF" => Some(Currency::XPF),
360            b"XPT" => Some(Currency::XPT),
361            b"XSU" => Some(Currency::XSU),
362            b"XTS" => Some(Currency::XTS),
363            b"XUA" => Some(Currency::XUA),
364            b"XXX" => Some(Currency::XXX),
365            b"YER" => Some(Currency::YER),
366            b"ZAR" => Some(Currency::ZAR),
367            b"ZMW" => Some(Currency::ZMW),
368            b"ZWL" => Some(Currency::ZWL),
369            _ => None,
370        }
371    }
372
373    pub const fn to_bytes(&self) -> &'static [u8] {
374        match self {
375            Currency::AED => b"AED",
376            Currency::AFN => b"AFN",
377            Currency::ALL => b"ALL",
378            Currency::AMD => b"AMD",
379            Currency::ANG => b"ANG",
380            Currency::AOA => b"AOA",
381            Currency::ARS => b"ARS",
382            Currency::AUD => b"AUD",
383            Currency::AWG => b"AWG",
384            Currency::AZN => b"AZN",
385            Currency::BAM => b"BAM",
386            Currency::BBD => b"BBD",
387            Currency::BDT => b"BDT",
388            Currency::BGN => b"BGN",
389            Currency::BHD => b"BHD",
390            Currency::BIF => b"BIF",
391            Currency::BMD => b"BMD",
392            Currency::BND => b"BND",
393            Currency::BOB => b"BOB",
394            Currency::BOV => b"BOV",
395            Currency::BRL => b"BRL",
396            Currency::BSD => b"BSD",
397            Currency::BTN => b"BTN",
398            Currency::BWP => b"BWP",
399            Currency::BYN => b"BYN",
400            Currency::BZD => b"BZD",
401            Currency::CAD => b"CAD",
402            Currency::CDF => b"CDF",
403            Currency::CHE => b"CHE",
404            Currency::CHF => b"CHF",
405            Currency::CHW => b"CHW",
406            Currency::CLF => b"CLF",
407            Currency::CLP => b"CLP",
408            Currency::CNY => b"CNY",
409            Currency::COP => b"COP",
410            Currency::COU => b"COU",
411            Currency::CRC => b"CRC",
412            Currency::CUC => b"CUC",
413            Currency::CUP => b"CUP",
414            Currency::CVE => b"CVE",
415            Currency::CZK => b"CZK",
416            Currency::DJF => b"DJF",
417            Currency::DKK => b"DKK",
418            Currency::DOP => b"DOP",
419            Currency::DZD => b"DZD",
420            Currency::EGP => b"EGP",
421            Currency::ERN => b"ERN",
422            Currency::ETB => b"ETB",
423            Currency::EUR => b"EUR",
424            Currency::FJD => b"FJD",
425            Currency::FKP => b"FKP",
426            Currency::GBP => b"GBP",
427            Currency::GEL => b"GEL",
428            Currency::GHS => b"GHS",
429            Currency::GIP => b"GIP",
430            Currency::GMD => b"GMD",
431            Currency::GNF => b"GNF",
432            Currency::GTQ => b"GTQ",
433            Currency::GYD => b"GYD",
434            Currency::HKD => b"HKD",
435            Currency::HNL => b"HNL",
436            Currency::HRK => b"HRK",
437            Currency::HTG => b"HTG",
438            Currency::HUF => b"HUF",
439            Currency::IDR => b"IDR",
440            Currency::ILS => b"ILS",
441            Currency::INR => b"INR",
442            Currency::IQD => b"IQD",
443            Currency::IRR => b"IRR",
444            Currency::ISK => b"ISK",
445            Currency::JMD => b"JMD",
446            Currency::JOD => b"JOD",
447            Currency::JPY => b"JPY",
448            Currency::KES => b"KES",
449            Currency::KGS => b"KGS",
450            Currency::KHR => b"KHR",
451            Currency::KMF => b"KMF",
452            Currency::KPW => b"KPW",
453            Currency::KRW => b"KRW",
454            Currency::KWD => b"KWD",
455            Currency::KYD => b"KYD",
456            Currency::KZT => b"KZT",
457            Currency::LAK => b"LAK",
458            Currency::LBP => b"LBP",
459            Currency::LKR => b"LKR",
460            Currency::LRD => b"LRD",
461            Currency::LSL => b"LSL",
462            Currency::LYD => b"LYD",
463            Currency::MAD => b"MAD",
464            Currency::MDL => b"MDL",
465            Currency::MGA => b"MGA",
466            Currency::MKD => b"MKD",
467            Currency::MMK => b"MMK",
468            Currency::MNT => b"MNT",
469            Currency::MOP => b"MOP",
470            Currency::MRU => b"MRU",
471            Currency::MUR => b"MUR",
472            Currency::MVR => b"MVR",
473            Currency::MWK => b"MWK",
474            Currency::MXN => b"MXN",
475            Currency::MXV => b"MXV",
476            Currency::MYR => b"MYR",
477            Currency::MZN => b"MZN",
478            Currency::NAD => b"NAD",
479            Currency::NGN => b"NGN",
480            Currency::NIO => b"NIO",
481            Currency::NOK => b"NOK",
482            Currency::NPR => b"NPR",
483            Currency::NZD => b"NZD",
484            Currency::OMR => b"OMR",
485            Currency::PAB => b"PAB",
486            Currency::PEN => b"PEN",
487            Currency::PGK => b"PGK",
488            Currency::PHP => b"PHP",
489            Currency::PKR => b"PKR",
490            Currency::PLN => b"PLN",
491            Currency::PYG => b"PYG",
492            Currency::QAR => b"QAR",
493            Currency::RON => b"RON",
494            Currency::RSD => b"RSD",
495            Currency::RUB => b"RUB",
496            Currency::RWF => b"RWF",
497            Currency::SAR => b"SAR",
498            Currency::SBD => b"SBD",
499            Currency::SCR => b"SCR",
500            Currency::SDG => b"SDG",
501            Currency::SEK => b"SEK",
502            Currency::SGD => b"SGD",
503            Currency::SHP => b"SHP",
504            Currency::SLE => b"SLE",
505            Currency::SOS => b"SOS",
506            Currency::SRD => b"SRD",
507            Currency::SSP => b"SSP",
508            Currency::STN => b"STN",
509            Currency::SVC => b"SVC",
510            Currency::SYP => b"SYP",
511            Currency::SZL => b"SZL",
512            Currency::THB => b"THB",
513            Currency::TJS => b"TJS",
514            Currency::TMT => b"TMT",
515            Currency::TND => b"TND",
516            Currency::TOP => b"TOP",
517            Currency::TRY => b"TRY",
518            Currency::TTD => b"TTD",
519            Currency::TWD => b"TWD",
520            Currency::TZS => b"TZS",
521            Currency::UAH => b"UAH",
522            Currency::UGX => b"UGX",
523            Currency::USD => b"USD",
524            Currency::USN => b"USN",
525            Currency::UYI => b"UYI",
526            Currency::UYU => b"UYU",
527            Currency::UYW => b"UYW",
528            Currency::UZS => b"UZS",
529            Currency::VED => b"VED",
530            Currency::VES => b"VES",
531            Currency::VND => b"VND",
532            Currency::VUV => b"VUV",
533            Currency::WST => b"WST",
534            Currency::XAF => b"XAF",
535            Currency::XAG => b"XAG",
536            Currency::XAU => b"XAU",
537            Currency::XBA => b"XBA",
538            Currency::XBB => b"XBB",
539            Currency::XBC => b"XBC",
540            Currency::XBD => b"XBD",
541            Currency::XCD => b"XCD",
542            Currency::XDR => b"XDR",
543            Currency::XOF => b"XOF",
544            Currency::XPD => b"XPD",
545            Currency::XPF => b"XPF",
546            Currency::XPT => b"XPT",
547            Currency::XSU => b"XSU",
548            Currency::XTS => b"XTS",
549            Currency::XUA => b"XUA",
550            Currency::XXX => b"XXX",
551            Currency::YER => b"YER",
552            Currency::ZAR => b"ZAR",
553            Currency::ZMW => b"ZMW",
554            Currency::ZWL => b"ZWL",
555        }
556    }
557}