stripe/resources/
currency.rs

1use serde::{Deserialize, Serialize};
2
3use crate::params::to_snakecase;
4
5/// Currency is the list of supported currencies.
6///
7/// For more details see <https://support.stripe.com/questions/which-currencies-does-stripe-support>.
8#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq, Hash, Default)]
9pub enum Currency {
10    #[serde(rename = "byn")]
11    BYN, // Belarusian Ruble
12    #[serde(rename = "mmk")]
13    MMK, // Myanmar Kyat
14    #[serde(rename = "aed")]
15    AED, // United Arab Emirates Dirham
16    #[serde(rename = "afn")]
17    AFN, // Afghan Afghani
18    #[serde(rename = "all")]
19    ALL, // Albanian Lek
20    #[serde(rename = "amd")]
21    AMD, // Armenian Dram
22    #[serde(rename = "ang")]
23    ANG, // Netherlands Antillean Gulden
24    #[serde(rename = "aoa")]
25    AOA, // Angolan Kwanza
26    #[serde(rename = "ars")]
27    ARS, // Argentine Peso
28    #[serde(rename = "aud")]
29    AUD, // Australian Dollar
30    #[serde(rename = "awg")]
31    AWG, // Aruban Florin
32    #[serde(rename = "azn")]
33    AZN, // Azerbaijani Manat
34    #[serde(rename = "bam")]
35    BAM, // Bosnia & Herzegovina Convertible Mark
36    #[serde(rename = "bbd")]
37    BBD, // Barbadian Dollar
38    #[serde(rename = "bdt")]
39    BDT, // Bangladeshi Taka
40    #[serde(rename = "bgn")]
41    BGN, // Bulgarian Lev
42    #[serde(rename = "bif")]
43    BIF, // Burundian Franc
44    #[serde(rename = "bmd")]
45    BMD, // Bermudian Dollar
46    #[serde(rename = "bnd")]
47    BND, // Brunei Dollar
48    #[serde(rename = "bob")]
49    BOB, // Bolivian Boliviano
50    #[serde(rename = "brl")]
51    BRL, // Brazilian Real
52    #[serde(rename = "bsd")]
53    BSD, // Bahamian Dollar
54    #[serde(rename = "bwp")]
55    BWP, // Botswana Pula
56    #[serde(rename = "bzd")]
57    BZD, // Belize Dollar
58    #[serde(rename = "cad")]
59    CAD, // Canadian Dollar
60    #[serde(rename = "cdf")]
61    CDF, // Congolese Franc
62    #[serde(rename = "chf")]
63    CHF, // Swiss Franc
64    #[serde(rename = "clp")]
65    CLP, // Chilean Peso
66    #[serde(rename = "cny")]
67    CNY, // Chinese Renminbi Yuan
68    #[serde(rename = "cop")]
69    COP, // Colombian Peso
70    #[serde(rename = "crc")]
71    CRC, // Costa Rican Colón
72    #[serde(rename = "cve")]
73    CVE, // Cape Verdean Escudo
74    #[serde(rename = "czk")]
75    CZK, // Czech Koruna
76    #[serde(rename = "djf")]
77    DJF, // Djiboutian Franc
78    #[serde(rename = "dkk")]
79    DKK, // Danish Krone
80    #[serde(rename = "dop")]
81    DOP, // Dominican Peso
82    #[serde(rename = "dzd")]
83    DZD, // Algerian Dinar
84    #[serde(rename = "eek")]
85    EEK, // Estonian Kroon
86    #[serde(rename = "egp")]
87    EGP, // Egyptian Pound
88    #[serde(rename = "etb")]
89    ETB, // Ethiopian Birr
90    #[serde(rename = "eur")]
91    EUR, // Euro
92    #[serde(rename = "fjd")]
93    FJD, // Fijian Dollar
94    #[serde(rename = "fkp")]
95    FKP, // Falkland Islands Pound
96    #[serde(rename = "gbp")]
97    GBP, // British Pound
98    #[serde(rename = "gel")]
99    GEL, // Georgian Lari
100    #[serde(rename = "gip")]
101    GIP, // Gibraltar Pound
102    #[serde(rename = "gmd")]
103    GMD, // Gambian Dalasi
104    #[serde(rename = "gnf")]
105    GNF, // Guinean Franc
106    #[serde(rename = "gtq")]
107    GTQ, // Guatemalan Quetzal
108    #[serde(rename = "gyd")]
109    GYD, // Guyanese Dollar
110    #[serde(rename = "hkd")]
111    HKD, // Hong Kong Dollar
112    #[serde(rename = "hnl")]
113    HNL, // Honduran Lempira
114    #[serde(rename = "hrk")]
115    HRK, // Croatian Kuna
116    #[serde(rename = "htg")]
117    HTG, // Haitian Gourde
118    #[serde(rename = "huf")]
119    HUF, // Hungarian Forint
120    #[serde(rename = "idr")]
121    IDR, // Indonesian Rupiah
122    #[serde(rename = "ils")]
123    ILS, // Israeli New Sheqel
124    #[serde(rename = "inr")]
125    INR, // Indian Rupee
126    #[serde(rename = "isk")]
127    ISK, // Icelandic Króna
128    #[serde(rename = "jmd")]
129    JMD, // Jamaican Dollar
130    #[serde(rename = "jpy")]
131    JPY, // Japanese Yen
132    #[serde(rename = "kes")]
133    KES, // Kenyan Shilling
134    #[serde(rename = "kgs")]
135    KGS, // Kyrgyzstani Som
136    #[serde(rename = "khr")]
137    KHR, // Cambodian Riel
138    #[serde(rename = "kmf")]
139    KMF, // Comorian Franc
140    #[serde(rename = "krw")]
141    KRW, // South Korean Won
142    #[serde(rename = "kyd")]
143    KYD, // Cayman Islands Dollar
144    #[serde(rename = "kzt")]
145    KZT, // Kazakhstani Tenge
146    #[serde(rename = "lak")]
147    LAK, // Lao Kip
148    #[serde(rename = "lbp")]
149    LBP, // Lebanese Pound
150    #[serde(rename = "lkr")]
151    LKR, // Sri Lankan Rupee
152    #[serde(rename = "lrd")]
153    LRD, // Liberian Dollar
154    #[serde(rename = "lsl")]
155    LSL, // Lesotho Loti
156    #[serde(rename = "ltl")]
157    LTL, // Lithuanian Litas
158    #[serde(rename = "lvl")]
159    LVL, // Latvian Lats
160    #[serde(rename = "mad")]
161    MAD, // Moroccan Dirham
162    #[serde(rename = "mdl")]
163    MDL, // Moldovan Leu
164    #[serde(rename = "mga")]
165    MGA, // Malagasy Ariary
166    #[serde(rename = "mkd")]
167    MKD, // Macedonian Denar
168    #[serde(rename = "mnt")]
169    MNT, // Mongolian Tögrög
170    #[serde(rename = "mop")]
171    MOP, // Macanese Pataca
172    #[serde(rename = "mro")]
173    MRO, // Mauritanian Ouguiya
174    #[serde(rename = "mur")]
175    MUR, // Mauritian Rupee
176    #[serde(rename = "mvr")]
177    MVR, // Maldivian Rufiyaa
178    #[serde(rename = "mwk")]
179    MWK, // Malawian Kwacha
180    #[serde(rename = "mxn")]
181    MXN, // Mexican Peso
182    #[serde(rename = "myr")]
183    MYR, // Malaysian Ringgit
184    #[serde(rename = "mzn")]
185    MZN, // Mozambican Metical
186    #[serde(rename = "nad")]
187    NAD, // Namibian Dollar
188    #[serde(rename = "ngn")]
189    NGN, // Nigerian Naira
190    #[serde(rename = "nio")]
191    NIO, // Nicaraguan Córdoba
192    #[serde(rename = "nok")]
193    NOK, // Norwegian Krone
194    #[serde(rename = "npr")]
195    NPR, // Nepalese Rupee
196    #[serde(rename = "nzd")]
197    NZD, // New Zealand Dollar
198    #[serde(rename = "pab")]
199    PAB, // Panamanian Balboa
200    #[serde(rename = "pen")]
201    PEN, // Peruvian Nuevo Sol
202    #[serde(rename = "pgk")]
203    PGK, // Papua New Guinean Kina
204    #[serde(rename = "php")]
205    PHP, // Philippine Peso
206    #[serde(rename = "pkr")]
207    PKR, // Pakistani Rupee
208    #[serde(rename = "pln")]
209    PLN, // Polish Złoty
210    #[serde(rename = "pyg")]
211    PYG, // Paraguayan Guaraní
212    #[serde(rename = "qar")]
213    QAR, // Qatari Riyal
214    #[serde(rename = "ron")]
215    RON, // Romanian Leu
216    #[serde(rename = "rsd")]
217    RSD, // Serbian Dinar
218    #[serde(rename = "rub")]
219    RUB, // Russian Ruble
220    #[serde(rename = "rwf")]
221    RWF, // Rwandan Franc
222    #[serde(rename = "sar")]
223    SAR, // Saudi Riyal
224    #[serde(rename = "sbd")]
225    SBD, // Solomon Islands Dollar
226    #[serde(rename = "scr")]
227    SCR, // Seychellois Rupee
228    #[serde(rename = "sek")]
229    SEK, // Swedish Krona
230    #[serde(rename = "sgd")]
231    SGD, // Singapore Dollar
232    #[serde(rename = "shp")]
233    SHP, // Saint Helenian Pound
234    #[serde(rename = "sll")]
235    SLL, // Sierra Leonean Leone
236    #[serde(rename = "sos")]
237    SOS, // Somali Shilling
238    #[serde(rename = "srd")]
239    SRD, // Surinamese Dollar
240    #[serde(rename = "std")]
241    STD, // São Tomé and Príncipe Dobra
242    #[serde(rename = "svc")]
243    SVC, // Salvadoran Colón
244    #[serde(rename = "szl")]
245    SZL, // Swazi Lilangeni
246    #[serde(rename = "thb")]
247    THB, // Thai Baht
248    #[serde(rename = "tjs")]
249    TJS, // Tajikistani Somoni
250    #[serde(rename = "top")]
251    TOP, // Tongan Paʻanga
252    #[serde(rename = "try")]
253    TRY, // Turkish Lira
254    #[serde(rename = "ttd")]
255    TTD, // Trinidad and Tobago Dollar
256    #[serde(rename = "twd")]
257    TWD, // New Taiwan Dollar
258    #[serde(rename = "tzs")]
259    TZS, // Tanzanian Shilling
260    #[serde(rename = "uah")]
261    UAH, // Ukrainian Hryvnia
262    #[serde(rename = "ugx")]
263    UGX, // Ugandan Shilling
264    #[serde(rename = "usd")]
265    #[default]
266    USD, // United States Dollar
267    #[serde(rename = "uyu")]
268    UYU, // Uruguayan Peso
269    #[serde(rename = "uzs")]
270    UZS, // Uzbekistani Som
271    #[serde(rename = "vef")]
272    VEF, // Venezuelan Bolívar
273    #[serde(rename = "vnd")]
274    VND, // Vietnamese Đồng
275    #[serde(rename = "vuv")]
276    VUV, // Vanuatu Vatu
277    #[serde(rename = "wst")]
278    WST, // Samoan Tala
279    #[serde(rename = "xaf")]
280    XAF, // Central African Cfa Franc
281    #[serde(rename = "xcd")]
282    XCD, // East Caribbean Dollar
283    #[serde(rename = "xof")]
284    XOF, // West African Cfa Franc
285    #[serde(rename = "xpf")]
286    XPF, // Cfp Franc
287    #[serde(rename = "yer")]
288    YER, // Yemeni Rial
289    #[serde(rename = "zar")]
290    ZAR, // South African Rand
291    #[serde(rename = "zmw")]
292    ZMW, // Zambian Kwacha
293}
294
295impl std::fmt::Display for Currency {
296    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
297        write!(f, "{}", to_snakecase(&format!("{:?}", self)))
298    }
299}
300
301impl std::str::FromStr for Currency {
302    type Err = ParseCurrencyError;
303    fn from_str(s: &str) -> Result<Self, Self::Err> {
304        match s {
305            "aed" => Ok(Currency::AED),
306            "afn" => Ok(Currency::AFN),
307            "all" => Ok(Currency::ALL),
308            "amd" => Ok(Currency::AMD),
309            "ang" => Ok(Currency::ANG),
310            "aoa" => Ok(Currency::AOA),
311            "ars" => Ok(Currency::ARS),
312            "aud" => Ok(Currency::AUD),
313            "awg" => Ok(Currency::AWG),
314            "azn" => Ok(Currency::AZN),
315            "bam" => Ok(Currency::BAM),
316            "bbd" => Ok(Currency::BBD),
317            "bdt" => Ok(Currency::BDT),
318            "bgn" => Ok(Currency::BGN),
319            "bif" => Ok(Currency::BIF),
320            "bmd" => Ok(Currency::BMD),
321            "bnd" => Ok(Currency::BND),
322            "bob" => Ok(Currency::BOB),
323            "brl" => Ok(Currency::BRL),
324            "bsd" => Ok(Currency::BSD),
325            "bwp" => Ok(Currency::BWP),
326            "bzd" => Ok(Currency::BZD),
327            "cad" => Ok(Currency::CAD),
328            "cdf" => Ok(Currency::CDF),
329            "chf" => Ok(Currency::CHF),
330            "clp" => Ok(Currency::CLP),
331            "cny" => Ok(Currency::CNY),
332            "cop" => Ok(Currency::COP),
333            "crc" => Ok(Currency::CRC),
334            "cve" => Ok(Currency::CVE),
335            "czk" => Ok(Currency::CZK),
336            "djf" => Ok(Currency::DJF),
337            "dkk" => Ok(Currency::DKK),
338            "dop" => Ok(Currency::DOP),
339            "dzd" => Ok(Currency::DZD),
340            "eek" => Ok(Currency::EEK),
341            "egp" => Ok(Currency::EGP),
342            "etb" => Ok(Currency::ETB),
343            "eur" => Ok(Currency::EUR),
344            "fjd" => Ok(Currency::FJD),
345            "fkp" => Ok(Currency::FKP),
346            "gbp" => Ok(Currency::GBP),
347            "gel" => Ok(Currency::GEL),
348            "gip" => Ok(Currency::GIP),
349            "gmd" => Ok(Currency::GMD),
350            "gnf" => Ok(Currency::GNF),
351            "gtq" => Ok(Currency::GTQ),
352            "gyd" => Ok(Currency::GYD),
353            "hkd" => Ok(Currency::HKD),
354            "hnl" => Ok(Currency::HNL),
355            "hrk" => Ok(Currency::HRK),
356            "htg" => Ok(Currency::HTG),
357            "huf" => Ok(Currency::HUF),
358            "idr" => Ok(Currency::IDR),
359            "ils" => Ok(Currency::ILS),
360            "inr" => Ok(Currency::INR),
361            "isk" => Ok(Currency::ISK),
362            "jmd" => Ok(Currency::JMD),
363            "jpy" => Ok(Currency::JPY),
364            "kes" => Ok(Currency::KES),
365            "kgs" => Ok(Currency::KGS),
366            "khr" => Ok(Currency::KHR),
367            "kmf" => Ok(Currency::KMF),
368            "krw" => Ok(Currency::KRW),
369            "kyd" => Ok(Currency::KYD),
370            "kzt" => Ok(Currency::KZT),
371            "lak" => Ok(Currency::LAK),
372            "lbp" => Ok(Currency::LBP),
373            "lkr" => Ok(Currency::LKR),
374            "lrd" => Ok(Currency::LRD),
375            "lsl" => Ok(Currency::LSL),
376            "ltl" => Ok(Currency::LTL),
377            "lvl" => Ok(Currency::LVL),
378            "mad" => Ok(Currency::MAD),
379            "mdl" => Ok(Currency::MDL),
380            "mga" => Ok(Currency::MGA),
381            "mkd" => Ok(Currency::MKD),
382            "mnt" => Ok(Currency::MNT),
383            "mop" => Ok(Currency::MOP),
384            "mro" => Ok(Currency::MRO),
385            "mur" => Ok(Currency::MUR),
386            "mvr" => Ok(Currency::MVR),
387            "mwk" => Ok(Currency::MWK),
388            "mxn" => Ok(Currency::MXN),
389            "myr" => Ok(Currency::MYR),
390            "mzn" => Ok(Currency::MZN),
391            "nad" => Ok(Currency::NAD),
392            "ngn" => Ok(Currency::NGN),
393            "nio" => Ok(Currency::NIO),
394            "nok" => Ok(Currency::NOK),
395            "npr" => Ok(Currency::NPR),
396            "nzd" => Ok(Currency::NZD),
397            "pab" => Ok(Currency::PAB),
398            "pen" => Ok(Currency::PEN),
399            "pgk" => Ok(Currency::PGK),
400            "php" => Ok(Currency::PHP),
401            "pkr" => Ok(Currency::PKR),
402            "pln" => Ok(Currency::PLN),
403            "pyg" => Ok(Currency::PYG),
404            "qar" => Ok(Currency::QAR),
405            "ron" => Ok(Currency::RON),
406            "rsd" => Ok(Currency::RSD),
407            "rub" => Ok(Currency::RUB),
408            "rwf" => Ok(Currency::RWF),
409            "sar" => Ok(Currency::SAR),
410            "sbd" => Ok(Currency::SBD),
411            "scr" => Ok(Currency::SCR),
412            "sek" => Ok(Currency::SEK),
413            "sgd" => Ok(Currency::SGD),
414            "shp" => Ok(Currency::SHP),
415            "sll" => Ok(Currency::SLL),
416            "sos" => Ok(Currency::SOS),
417            "srd" => Ok(Currency::SRD),
418            "std" => Ok(Currency::STD),
419            "svc" => Ok(Currency::SVC),
420            "szl" => Ok(Currency::SZL),
421            "thb" => Ok(Currency::THB),
422            "tjs" => Ok(Currency::TJS),
423            "top" => Ok(Currency::TOP),
424            "try" => Ok(Currency::TRY),
425            "ttd" => Ok(Currency::TTD),
426            "twd" => Ok(Currency::TWD),
427            "tzs" => Ok(Currency::TZS),
428            "uah" => Ok(Currency::UAH),
429            "ugx" => Ok(Currency::UGX),
430            "usd" => Ok(Currency::USD),
431            "uyu" => Ok(Currency::UYU),
432            "uzs" => Ok(Currency::UZS),
433            "vef" => Ok(Currency::VEF),
434            "vnd" => Ok(Currency::VND),
435            "vuv" => Ok(Currency::VUV),
436            "wst" => Ok(Currency::WST),
437            "xaf" => Ok(Currency::XAF),
438            "xcd" => Ok(Currency::XCD),
439            "xof" => Ok(Currency::XOF),
440            "xpf" => Ok(Currency::XPF),
441            "yer" => Ok(Currency::YER),
442            "zar" => Ok(Currency::ZAR),
443            "zmw" => Ok(Currency::ZMW),
444            _ => Err(ParseCurrencyError(())),
445        }
446    }
447}
448
449#[derive(Debug)]
450pub struct ParseCurrencyError(/* private */ ());
451
452impl std::fmt::Display for ParseCurrencyError {
453    fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
454        #[allow(deprecated)]
455        fmt.write_str(::std::error::Error::description(self))
456    }
457}
458
459impl std::error::Error for ParseCurrencyError {
460    fn description(&self) -> &str {
461        "unknown currency code"
462    }
463}