use crate::currency::Currency;
use std::fmt;
macro_rules! define_enum {
($Name:ident { $($Variant:ident),* $(,)* }) =>
{
#[derive(Debug)]
pub enum $Name {
$($Variant),*,
}
pub const ISO_CURRENCIES: &'static [$Name] = &[$($Name::$Variant),*];
}
}
define_enum!(Iso {
AED,
AFN,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BYR,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SKK,
SLL,
SOS,
SRD,
SSP,
STD,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XAG,
XAU,
XBA,
XBB,
XBC,
XBD,
XCD,
XDR,
XOF,
XPD,
XPF,
XPT,
XTS,
YER,
ZAR,
ZMK,
ZMW,
ZWL,
});
impl fmt::Display for Iso {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:?}", self)
}
}
pub fn from_enum(code: &Iso) -> Currency {
use Iso::*;
match code {
AED => Currency {
code: "AED",
name: "United Arab Emirates Dirham",
symbol: "د.إ",
},
AFN => Currency {
code: "AFN",
name: "Afghan Afghani",
symbol: "؋",
},
AMD => Currency {
code: "AMD",
name: "Armenian Dram",
symbol: "դր.",
},
ANG => Currency {
code: "ANG",
name: "Netherlands Antillean Gulden",
symbol: "ƒ",
},
AOA => Currency {
code: "AOA",
name: "Angolan Kwanza",
symbol: "Kz",
},
ARS => Currency {
code: "ARS",
name: "Argentine Peso",
symbol: "$",
},
AUD => Currency {
code: "AUD",
name: "Australian Dollar",
symbol: "$",
},
AWG => Currency {
code: "AWG",
name: "Aruban Florin",
symbol: "ƒ",
},
AZN => Currency {
code: "AZN",
name: "Azerbaijani Manat",
symbol: "₼",
},
BAM => Currency {
code: "BAM",
name: "Bosnia and Herzegovina Convertible Mark",
symbol: "KM",
},
BBD => Currency {
code: "BBD",
name: "Barbadian Dollar",
symbol: "$",
},
BDT => Currency {
code: "BDT",
name: "Bangladeshi Taka",
symbol: "৳",
},
BGN => Currency {
code: "BGN",
name: "Bulgarian Lev",
symbol: "лв.",
},
BHD => Currency {
code: "BHD",
name: "Bahraini Dinar",
symbol: "ب.د",
},
BIF => Currency {
code: "BIF",
name: "Burundian Franc",
symbol: "Fr",
},
BMD => Currency {
code: "BMD",
name: "Bermudian Dollar",
symbol: "$",
},
BND => Currency {
code: "BND",
name: "Brunei Dollar",
symbol: "$",
},
BOB => Currency {
code: "BOB",
name: "Bolivian Boliviano",
symbol: "Bs.",
},
BRL => Currency {
code: "BRL",
name: "Brazilian real",
symbol: "R$",
},
BSD => Currency {
code: "BSD",
name: "Bahamian Dollar",
symbol: "$",
},
BTN => Currency {
code: "BTN",
name: "Bhutanese Ngultrum",
symbol: "Nu.",
},
BWP => Currency {
code: "BWP",
name: "Botswana Pula",
symbol: "P",
},
BYN => Currency {
code: "BYN",
name: "Belarusian Ruble",
symbol: "Br",
},
BYR => Currency {
code: "BYR",
name: "Belarusian Ruble",
symbol: "Br",
},
BZD => Currency {
code: "BZD",
name: "Belize Dollar",
symbol: "$",
},
CAD => Currency {
code: "CAD",
name: "Canadian Dollar",
symbol: "$",
},
CDF => Currency {
code: "CDF",
name: "Congolese Franc",
symbol: "Fr",
},
CHF => Currency {
code: "CHF",
name: "Swiss Franc",
symbol: "Fr",
},
CLF => Currency {
code: "CLF",
name: "Unidad de Fomento",
symbol: "UF",
},
CLP => Currency {
code: "CLP",
name: "Chilean Peso",
symbol: "$",
},
CNY => Currency {
code: "CNY",
name: "Chinese Renminbi Yuan",
symbol: "¥",
},
COP => Currency {
code: "COP",
name: "Colombian Peso",
symbol: "$",
},
CRC => Currency {
code: "CRC",
name: "Costa Rican Colón",
symbol: "₡",
},
CUC => Currency {
code: "CUC",
name: "Cuban Convertible Peso",
symbol: "$",
},
CUP => Currency {
code: "CUP",
name: "Cuban Peso",
symbol: "$",
},
CVE => Currency {
code: "CVE",
name: "Cape Verdean Escudo",
symbol: "$",
},
CZK => Currency {
code: "CZK",
name: "Czech Koruna",
symbol: "Kč",
},
DJF => Currency {
code: "DJF",
name: "Djiboutian Franc",
symbol: "Fdj",
},
DKK => Currency {
code: "DKK",
name: "Danish Krone",
symbol: "kr.",
},
DOP => Currency {
code: "DOP",
name: "Dominican Peso",
symbol: "$",
},
DZD => Currency {
code: "DZD",
name: "Algerian Dinar",
symbol: "د.ج",
},
EGP => Currency {
code: "EGP",
name: "Egyptian Pound",
symbol: "ج.م",
},
ERN => Currency {
code: "ERN",
name: "Eritrean Nakfa",
symbol: "Nfk",
},
ETB => Currency {
code: "ETB",
name: "Ethiopian Birr",
symbol: "Br",
},
EUR => Currency {
code: "EUR",
name: "Euro",
symbol: "€",
},
FJD => Currency {
code: "FJD",
name: "Fijian Dollar",
symbol: "$",
},
FKP => Currency {
code: "FKP",
name: "Falkland Pound",
symbol: "£",
},
GBP => Currency {
code: "GBP",
name: "British Pound",
symbol: "£",
},
GEL => Currency {
code: "GEL",
name: "Georgian Lari",
symbol: "ლ",
},
GHS => Currency {
code: "GHS",
name: "Ghanaian Cedi",
symbol: "₵",
},
GIP => Currency {
code: "GIP",
name: "Gibraltar Pound",
symbol: "£",
},
GMD => Currency {
code: "GMD",
name: "Gambian Dalasi",
symbol: "D",
},
GNF => Currency {
code: "GNF",
name: "Guinean Franc",
symbol: "Fr",
},
GTQ => Currency {
code: "GTQ",
name: "Guatemalan Quetzal",
symbol: "Q",
},
GYD => Currency {
code: "GYD",
name: "Guyanese Dollar",
symbol: "$",
},
HKD => Currency {
code: "HKD",
name: "Hong Kong Dollar",
symbol: "$",
},
HNL => Currency {
code: "HNL",
name: "Honduran Lempira",
symbol: "L",
},
HRK => Currency {
code: "HRK",
name: "Croatian Kuna",
symbol: "kn",
},
HTG => Currency {
code: "HTG",
name: "Haitian Gourde",
symbol: "G",
},
HUF => Currency {
code: "HUF",
name: "Hungarian Forint",
symbol: "Ft",
},
IDR => Currency {
code: "IDR",
name: "Indonesian Rupiah",
symbol: "Rp",
},
ILS => Currency {
code: "ILS",
name: "Israeli New Sheqel",
symbol: "₪",
},
INR => Currency {
code: "INR",
name: "Indian Rupee",
symbol: "₹",
},
IQD => Currency {
code: "IQD",
name: "Iraqi Dinar",
symbol: "ع.د",
},
IRR => Currency {
code: "IRR",
name: "Iranian Rial",
symbol: "﷼",
},
ISK => Currency {
code: "ISK",
name: "Icelandic Króna",
symbol: "kr",
},
JMD => Currency {
code: "JMD",
name: "Jamaican Dollar",
symbol: "$",
},
JOD => Currency {
code: "JOD",
name: "Jordanian Dinar",
symbol: "د.ا",
},
JPY => Currency {
code: "JPY",
name: "Japanese Yen",
symbol: "¥",
},
KES => Currency {
code: "KES",
name: "Kenyan Shilling",
symbol: "KSh",
},
KGS => Currency {
code: "KGS",
name: "Kyrgyzstani Som",
symbol: "som",
},
KHR => Currency {
code: "KHR",
name: "Cambodian Riel",
symbol: "៛",
},
KMF => Currency {
code: "KMF",
name: "Comorian Franc",
symbol: "Fr",
},
KPW => Currency {
code: "KPW",
name: "North Korean Won",
symbol: "₩",
},
KRW => Currency {
code: "KRW",
name: "South Korean Won",
symbol: "₩",
},
KWD => Currency {
code: "KWD",
name: "Kuwaiti Dinar",
symbol: "د.ك",
},
KYD => Currency {
code: "KYD",
name: "Cayman Islands Dollar",
symbol: "$",
},
KZT => Currency {
code: "KZT",
name: "Kazakhstani Tenge",
symbol: "₸",
},
LAK => Currency {
code: "LAK",
name: "Lao Kip",
symbol: "₭",
},
LBP => Currency {
code: "LBP",
name: "Lebanese Pound",
symbol: "ل.ل",
},
LKR => Currency {
code: "LKR",
name: "Sri Lankan Rupee",
symbol: "₨",
},
LRD => Currency {
code: "LRD",
name: "Liberian Dollar",
symbol: "$",
},
LSL => Currency {
code: "LSL",
name: "Lesotho Loti",
symbol: "L",
},
LYD => Currency {
code: "LYD",
name: "Libyan Dinar",
symbol: "ل.د",
},
MAD => Currency {
code: "MAD",
name: "Moroccan Dirham",
symbol: "د.م.",
},
MDL => Currency {
code: "MDL",
name: "Moldovan Leu",
symbol: "L",
},
MGA => Currency {
code: "MGA",
name: "Malagasy Ariary",
symbol: "Ar",
},
MKD => Currency {
code: "MKD",
name: "Macedonian Denar",
symbol: "ден",
},
MMK => Currency {
code: "MMK",
name: "Myanmar Kyat",
symbol: "K",
},
MNT => Currency {
code: "MNT",
name: "Mongolian Tögrög",
symbol: "₮",
},
MOP => Currency {
code: "MOP",
name: "Macanese Pataca",
symbol: "P",
},
MRU => Currency {
code: "MRU",
name: "Mauritanian Ouguiya",
symbol: "UM",
},
MUR => Currency {
code: "MUR",
name: "Mauritian Rupee",
symbol: "₨",
},
MVR => Currency {
code: "MVR",
name: "Maldivian Rufiyaa",
symbol: "MVR",
},
MWK => Currency {
code: "MWK",
name: "Malawian Kwacha",
symbol: "MK",
},
MXN => Currency {
code: "MXN",
name: "Mexican Peso",
symbol: "$",
},
MYR => Currency {
code: "MYR",
name: "Malaysian Ringgit",
symbol: "RM",
},
MZN => Currency {
code: "MZN",
name: "Mozambican Metical",
symbol: "MTn",
},
NAD => Currency {
code: "NAD",
name: "Namibian Dollar",
symbol: "$",
},
NGN => Currency {
code: "NGN",
name: "Nigerian Naira",
symbol: "₦",
},
NIO => Currency {
code: "NIO",
name: "Nicaraguan Córdoba",
symbol: "C$",
},
NOK => Currency {
code: "NOK",
name: "Norwegian Krone",
symbol: "kr",
},
NPR => Currency {
code: "NPR",
name: "Nepalese Rupee",
symbol: "₨",
},
NZD => Currency {
code: "NZD",
name: "New Zealand Dollar",
symbol: "$",
},
OMR => Currency {
code: "OMR",
name: "Omani Rial",
symbol: "ر.ع.",
},
PAB => Currency {
code: "PAB",
name: "Panamanian Balboa",
symbol: "B/.",
},
PEN => Currency {
code: "PEN",
name: "Peruvian Sol",
symbol: "S/",
},
PGK => Currency {
code: "PGK",
name: "Papua New Guinean Kina",
symbol: "K",
},
PHP => Currency {
code: "PHP",
name: "Philippine Peso",
symbol: "₱",
},
PKR => Currency {
code: "PKR",
name: "Pakistani Rupee",
symbol: "₨",
},
PLN => Currency {
code: "PLN",
name: "Polish Złoty",
symbol: "zł",
},
PYG => Currency {
code: "PYG",
name: "Paraguayan Guaraní",
symbol: "₲",
},
QAR => Currency {
code: "QAR",
name: "Qatari Riyal",
symbol: "ر.ق",
},
RON => Currency {
code: "RON",
name: "Romanian Leu",
symbol: "ر.ق",
},
RSD => Currency {
code: "RSD",
name: "Serbian Dinar",
symbol: "РСД",
},
RUB => Currency {
code: "RUB",
name: "Russian Ruble",
symbol: "₽",
},
RWF => Currency {
code: "RWF",
name: "Rwandan Franc",
symbol: "FRw",
},
SAR => Currency {
code: "SAR",
name: "Saudi Riyal",
symbol: "ر.س",
},
SBD => Currency {
code: "SBD",
name: "Solomon Islands Dollar",
symbol: "$",
},
SCR => Currency {
code: "SCR",
name: "Seychellois Rupee",
symbol: "₨",
},
SDG => Currency {
code: "SDG",
name: "Sudanese Pound",
symbol: "£",
},
SEK => Currency {
code: "SEK",
name: "Swedish Krona",
symbol: "kr",
},
SGD => Currency {
code: "SGD",
name: "Singapore Dollar",
symbol: "$",
},
SHP => Currency {
code: "SHP",
name: "Saint Helenian Pound",
symbol: "£",
},
SKK => Currency {
code: "SKK",
name: "Slovak Koruna",
symbol: "Sk",
},
SLL => Currency {
code: "SLL",
name: "Sierra Leonean Leone",
symbol: "Le",
},
SOS => Currency {
code: "SOS",
name: "Somali Shilling",
symbol: "Sh",
},
SRD => Currency {
code: "SRD",
name: "Surinamese Dollar",
symbol: "$",
},
SSP => Currency {
code: "SSP",
name: "South Sudanese Pound",
symbol: "£",
},
STD => Currency {
code: "STD",
name: "São Tomé and Príncipe Dobra",
symbol: "Db",
},
SVC => Currency {
code: "SVC",
name: "Salvadoran Colón",
symbol: "₡",
},
SYP => Currency {
code: "SYP",
name: "Syrian Pound",
symbol: "£S",
},
SZL => Currency {
code: "SZL",
name: "Swazi Lilangeni",
symbol: "E",
},
THB => Currency {
code: "THB",
name: "Thai Baht",
symbol: "฿",
},
TJS => Currency {
code: "TJS",
name: "Tajikistani Somoni",
symbol: "ЅМ",
},
TMT => Currency {
code: "TMT",
name: "Turkmenistani Manat",
symbol: "T",
},
TND => Currency {
code: "TND",
name: "Tunisian Dinar",
symbol: "د.ت",
},
TOP => Currency {
code: "TOP",
name: "Tongan Paʻanga",
symbol: "T$",
},
TRY => Currency {
code: "TRY",
name: "Turkish Lira",
symbol: "₺",
},
TTD => Currency {
code: "TTD",
name: "Trinidad and Tobago Dollar",
symbol: "$",
},
TWD => Currency {
code: "TWD",
name: "New Taiwan Dollar",
symbol: "$",
},
TZS => Currency {
code: "TZS",
name: "Tanzanian Shilling",
symbol: "Sh",
},
UAH => Currency {
code: "UAH",
name: "Ukrainian Hryvnia",
symbol: "₴",
},
UGX => Currency {
code: "UGX",
name: "Ugandan Shilling",
symbol: "USh",
},
USD => Currency {
code: "USD",
name: "United States Dollar",
symbol: "$",
},
UYU => Currency {
code: "UYU",
name: "Uruguayan Peso",
symbol: "$",
},
UZS => Currency {
code: "UZS",
name: "Uzbekistan Som",
symbol: "so'm",
},
VES => Currency {
code: "VES",
name: "Venezuelan Bolívar Soberano",
symbol: "Bs",
},
VND => Currency {
code: "VND",
name: "Vietnamese Đồng",
symbol: "₫",
},
VUV => Currency {
code: "VUV",
name: "Vanuatu Vatu",
symbol: "Vt",
},
WST => Currency {
code: "WST",
name: "Samoan Tala",
symbol: "T",
},
XAF => Currency {
code: "XAF",
name: "Central African Cfa Franc",
symbol: "CFA",
},
XAG => Currency {
code: "XAG",
name: "Silver (Troy Ounce)",
symbol: "oz t",
},
XAU => Currency {
code: "XAU",
name: "Gold (Troy Ounce)",
symbol: "oz t",
},
XBA => Currency {
code: "XBA",
name: "European Composite Unit",
symbol: "",
},
XBB => Currency {
code: "XBB",
name: "European Monetary Unit",
symbol: "",
},
XBC => Currency {
code: "XBC",
name: "European Unit of Account 9",
symbol: "",
},
XBD => Currency {
code: "XBD",
name: "European Unit of Account 17",
symbol: "",
},
XCD => Currency {
code: "XCD",
name: "East Caribbean Dollar",
symbol: "$",
},
XDR => Currency {
code: "XDR",
name: "Special Drawing Rights",
symbol: "SDR",
},
XOF => Currency {
code: "XOF",
name: "West African Cfa Franc",
symbol: "Fr",
},
XPD => Currency {
code: "XPD",
name: "Palladium",
symbol: "oz t",
},
XPF => Currency {
code: "XPF",
name: "Cfp Franc",
symbol: "Fr",
},
XPT => Currency {
code: "XPT",
name: "Platinum",
symbol: "oz t",
},
XTS => Currency {
code: "XTS",
name: "Codes specifically reserved for testing purposes",
symbol: "oz t",
},
YER => Currency {
code: "YER",
name: "Yemeni Rial",
symbol: "﷼",
},
ZAR => Currency {
code: "ZAR",
name: "South African Rand",
symbol: "R",
},
ZMK => Currency {
code: "ZMK",
name: "Zambian Kwacha",
symbol: "ZK",
},
ZMW => Currency {
code: "ZMW",
name: "Zambian Kwacha",
symbol: "K",
},
ZWL => Currency {
code: "ZWL",
name: "Zimbabwe Dollar",
symbol: "Z$",
},
}
}