use serde::{Deserialize, Serialize};
use crate::params::to_snakecase;
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq, Hash, Default)]
pub enum Currency {
#[serde(rename = "byn")]
BYN, #[serde(rename = "mmk")]
MMK, #[serde(rename = "aed")]
AED, #[serde(rename = "afn")]
AFN, #[serde(rename = "all")]
ALL, #[serde(rename = "amd")]
AMD, #[serde(rename = "ang")]
ANG, #[serde(rename = "aoa")]
AOA, #[serde(rename = "ars")]
ARS, #[serde(rename = "aud")]
AUD, #[serde(rename = "awg")]
AWG, #[serde(rename = "azn")]
AZN, #[serde(rename = "bam")]
BAM, #[serde(rename = "bbd")]
BBD, #[serde(rename = "bdt")]
BDT, #[serde(rename = "bgn")]
BGN, #[serde(rename = "bif")]
BIF, #[serde(rename = "bmd")]
BMD, #[serde(rename = "bnd")]
BND, #[serde(rename = "bob")]
BOB, #[serde(rename = "brl")]
BRL, #[serde(rename = "bsd")]
BSD, #[serde(rename = "bwp")]
BWP, #[serde(rename = "bzd")]
BZD, #[serde(rename = "cad")]
CAD, #[serde(rename = "cdf")]
CDF, #[serde(rename = "chf")]
CHF, #[serde(rename = "clp")]
CLP, #[serde(rename = "cny")]
CNY, #[serde(rename = "cop")]
COP, #[serde(rename = "crc")]
CRC, #[serde(rename = "cve")]
CVE, #[serde(rename = "czk")]
CZK, #[serde(rename = "djf")]
DJF, #[serde(rename = "dkk")]
DKK, #[serde(rename = "dop")]
DOP, #[serde(rename = "dzd")]
DZD, #[serde(rename = "eek")]
EEK, #[serde(rename = "egp")]
EGP, #[serde(rename = "etb")]
ETB, #[serde(rename = "eur")]
EUR, #[serde(rename = "fjd")]
FJD, #[serde(rename = "fkp")]
FKP, #[serde(rename = "gbp")]
GBP, #[serde(rename = "gel")]
GEL, #[serde(rename = "gip")]
GIP, #[serde(rename = "gmd")]
GMD, #[serde(rename = "gnf")]
GNF, #[serde(rename = "gtq")]
GTQ, #[serde(rename = "gyd")]
GYD, #[serde(rename = "hkd")]
HKD, #[serde(rename = "hnl")]
HNL, #[serde(rename = "hrk")]
HRK, #[serde(rename = "htg")]
HTG, #[serde(rename = "huf")]
HUF, #[serde(rename = "idr")]
IDR, #[serde(rename = "ils")]
ILS, #[serde(rename = "inr")]
INR, #[serde(rename = "isk")]
ISK, #[serde(rename = "jmd")]
JMD, #[serde(rename = "jpy")]
JPY, #[serde(rename = "kes")]
KES, #[serde(rename = "kgs")]
KGS, #[serde(rename = "khr")]
KHR, #[serde(rename = "kmf")]
KMF, #[serde(rename = "krw")]
KRW, #[serde(rename = "kyd")]
KYD, #[serde(rename = "kzt")]
KZT, #[serde(rename = "lak")]
LAK, #[serde(rename = "lbp")]
LBP, #[serde(rename = "lkr")]
LKR, #[serde(rename = "lrd")]
LRD, #[serde(rename = "lsl")]
LSL, #[serde(rename = "ltl")]
LTL, #[serde(rename = "lvl")]
LVL, #[serde(rename = "mad")]
MAD, #[serde(rename = "mdl")]
MDL, #[serde(rename = "mga")]
MGA, #[serde(rename = "mkd")]
MKD, #[serde(rename = "mnt")]
MNT, #[serde(rename = "mop")]
MOP, #[serde(rename = "mro")]
MRO, #[serde(rename = "mur")]
MUR, #[serde(rename = "mvr")]
MVR, #[serde(rename = "mwk")]
MWK, #[serde(rename = "mxn")]
MXN, #[serde(rename = "myr")]
MYR, #[serde(rename = "mzn")]
MZN, #[serde(rename = "nad")]
NAD, #[serde(rename = "ngn")]
NGN, #[serde(rename = "nio")]
NIO, #[serde(rename = "nok")]
NOK, #[serde(rename = "npr")]
NPR, #[serde(rename = "nzd")]
NZD, #[serde(rename = "pab")]
PAB, #[serde(rename = "pen")]
PEN, #[serde(rename = "pgk")]
PGK, #[serde(rename = "php")]
PHP, #[serde(rename = "pkr")]
PKR, #[serde(rename = "pln")]
PLN, #[serde(rename = "pyg")]
PYG, #[serde(rename = "qar")]
QAR, #[serde(rename = "ron")]
RON, #[serde(rename = "rsd")]
RSD, #[serde(rename = "rub")]
RUB, #[serde(rename = "rwf")]
RWF, #[serde(rename = "sar")]
SAR, #[serde(rename = "sbd")]
SBD, #[serde(rename = "scr")]
SCR, #[serde(rename = "sek")]
SEK, #[serde(rename = "sgd")]
SGD, #[serde(rename = "shp")]
SHP, #[serde(rename = "sll")]
SLL, #[serde(rename = "sos")]
SOS, #[serde(rename = "srd")]
SRD, #[serde(rename = "std")]
STD, #[serde(rename = "svc")]
SVC, #[serde(rename = "szl")]
SZL, #[serde(rename = "thb")]
THB, #[serde(rename = "tjs")]
TJS, #[serde(rename = "top")]
TOP, #[serde(rename = "try")]
TRY, #[serde(rename = "ttd")]
TTD, #[serde(rename = "twd")]
TWD, #[serde(rename = "tzs")]
TZS, #[serde(rename = "uah")]
UAH, #[serde(rename = "ugx")]
UGX, #[serde(rename = "usd")]
#[default]
USD, #[serde(rename = "uyu")]
UYU, #[serde(rename = "uzs")]
UZS, #[serde(rename = "vef")]
VEF, #[serde(rename = "vnd")]
VND, #[serde(rename = "vuv")]
VUV, #[serde(rename = "wst")]
WST, #[serde(rename = "xaf")]
XAF, #[serde(rename = "xcd")]
XCD, #[serde(rename = "xof")]
XOF, #[serde(rename = "xpf")]
XPF, #[serde(rename = "yer")]
YER, #[serde(rename = "zar")]
ZAR, #[serde(rename = "zmw")]
ZMW, }
impl std::fmt::Display for Currency {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", to_snakecase(&format!("{:?}", self)))
}
}
impl std::str::FromStr for Currency {
type Err = ParseCurrencyError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"aed" => Ok(Currency::AED),
"afn" => Ok(Currency::AFN),
"all" => Ok(Currency::ALL),
"amd" => Ok(Currency::AMD),
"ang" => Ok(Currency::ANG),
"aoa" => Ok(Currency::AOA),
"ars" => Ok(Currency::ARS),
"aud" => Ok(Currency::AUD),
"awg" => Ok(Currency::AWG),
"azn" => Ok(Currency::AZN),
"bam" => Ok(Currency::BAM),
"bbd" => Ok(Currency::BBD),
"bdt" => Ok(Currency::BDT),
"bgn" => Ok(Currency::BGN),
"bif" => Ok(Currency::BIF),
"bmd" => Ok(Currency::BMD),
"bnd" => Ok(Currency::BND),
"bob" => Ok(Currency::BOB),
"brl" => Ok(Currency::BRL),
"bsd" => Ok(Currency::BSD),
"bwp" => Ok(Currency::BWP),
"bzd" => Ok(Currency::BZD),
"cad" => Ok(Currency::CAD),
"cdf" => Ok(Currency::CDF),
"chf" => Ok(Currency::CHF),
"clp" => Ok(Currency::CLP),
"cny" => Ok(Currency::CNY),
"cop" => Ok(Currency::COP),
"crc" => Ok(Currency::CRC),
"cve" => Ok(Currency::CVE),
"czk" => Ok(Currency::CZK),
"djf" => Ok(Currency::DJF),
"dkk" => Ok(Currency::DKK),
"dop" => Ok(Currency::DOP),
"dzd" => Ok(Currency::DZD),
"eek" => Ok(Currency::EEK),
"egp" => Ok(Currency::EGP),
"etb" => Ok(Currency::ETB),
"eur" => Ok(Currency::EUR),
"fjd" => Ok(Currency::FJD),
"fkp" => Ok(Currency::FKP),
"gbp" => Ok(Currency::GBP),
"gel" => Ok(Currency::GEL),
"gip" => Ok(Currency::GIP),
"gmd" => Ok(Currency::GMD),
"gnf" => Ok(Currency::GNF),
"gtq" => Ok(Currency::GTQ),
"gyd" => Ok(Currency::GYD),
"hkd" => Ok(Currency::HKD),
"hnl" => Ok(Currency::HNL),
"hrk" => Ok(Currency::HRK),
"htg" => Ok(Currency::HTG),
"huf" => Ok(Currency::HUF),
"idr" => Ok(Currency::IDR),
"ils" => Ok(Currency::ILS),
"inr" => Ok(Currency::INR),
"isk" => Ok(Currency::ISK),
"jmd" => Ok(Currency::JMD),
"jpy" => Ok(Currency::JPY),
"kes" => Ok(Currency::KES),
"kgs" => Ok(Currency::KGS),
"khr" => Ok(Currency::KHR),
"kmf" => Ok(Currency::KMF),
"krw" => Ok(Currency::KRW),
"kyd" => Ok(Currency::KYD),
"kzt" => Ok(Currency::KZT),
"lak" => Ok(Currency::LAK),
"lbp" => Ok(Currency::LBP),
"lkr" => Ok(Currency::LKR),
"lrd" => Ok(Currency::LRD),
"lsl" => Ok(Currency::LSL),
"ltl" => Ok(Currency::LTL),
"lvl" => Ok(Currency::LVL),
"mad" => Ok(Currency::MAD),
"mdl" => Ok(Currency::MDL),
"mga" => Ok(Currency::MGA),
"mkd" => Ok(Currency::MKD),
"mnt" => Ok(Currency::MNT),
"mop" => Ok(Currency::MOP),
"mro" => Ok(Currency::MRO),
"mur" => Ok(Currency::MUR),
"mvr" => Ok(Currency::MVR),
"mwk" => Ok(Currency::MWK),
"mxn" => Ok(Currency::MXN),
"myr" => Ok(Currency::MYR),
"mzn" => Ok(Currency::MZN),
"nad" => Ok(Currency::NAD),
"ngn" => Ok(Currency::NGN),
"nio" => Ok(Currency::NIO),
"nok" => Ok(Currency::NOK),
"npr" => Ok(Currency::NPR),
"nzd" => Ok(Currency::NZD),
"pab" => Ok(Currency::PAB),
"pen" => Ok(Currency::PEN),
"pgk" => Ok(Currency::PGK),
"php" => Ok(Currency::PHP),
"pkr" => Ok(Currency::PKR),
"pln" => Ok(Currency::PLN),
"pyg" => Ok(Currency::PYG),
"qar" => Ok(Currency::QAR),
"ron" => Ok(Currency::RON),
"rsd" => Ok(Currency::RSD),
"rub" => Ok(Currency::RUB),
"rwf" => Ok(Currency::RWF),
"sar" => Ok(Currency::SAR),
"sbd" => Ok(Currency::SBD),
"scr" => Ok(Currency::SCR),
"sek" => Ok(Currency::SEK),
"sgd" => Ok(Currency::SGD),
"shp" => Ok(Currency::SHP),
"sll" => Ok(Currency::SLL),
"sos" => Ok(Currency::SOS),
"srd" => Ok(Currency::SRD),
"std" => Ok(Currency::STD),
"svc" => Ok(Currency::SVC),
"szl" => Ok(Currency::SZL),
"thb" => Ok(Currency::THB),
"tjs" => Ok(Currency::TJS),
"top" => Ok(Currency::TOP),
"try" => Ok(Currency::TRY),
"ttd" => Ok(Currency::TTD),
"twd" => Ok(Currency::TWD),
"tzs" => Ok(Currency::TZS),
"uah" => Ok(Currency::UAH),
"ugx" => Ok(Currency::UGX),
"usd" => Ok(Currency::USD),
"uyu" => Ok(Currency::UYU),
"uzs" => Ok(Currency::UZS),
"vef" => Ok(Currency::VEF),
"vnd" => Ok(Currency::VND),
"vuv" => Ok(Currency::VUV),
"wst" => Ok(Currency::WST),
"xaf" => Ok(Currency::XAF),
"xcd" => Ok(Currency::XCD),
"xof" => Ok(Currency::XOF),
"xpf" => Ok(Currency::XPF),
"yer" => Ok(Currency::YER),
"zar" => Ok(Currency::ZAR),
"zmw" => Ok(Currency::ZMW),
_ => Err(ParseCurrencyError(())),
}
}
}
#[derive(Debug)]
pub struct ParseCurrencyError(());
impl std::fmt::Display for ParseCurrencyError {
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
#[allow(deprecated)]
fmt.write_str(::std::error::Error::description(self))
}
}
impl std::error::Error for ParseCurrencyError {
fn description(&self) -> &str {
"unknown currency code"
}
}