use crate::params::to_snakecase;
use serde_derive::{Deserialize, Serialize};
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq, Hash)]
pub enum Currency {
#[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")]
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 Default for Currency {
fn default() -> Self {
Currency::USD
}
}
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 {
fmt.write_str(::std::error::Error::description(self))
}
}
impl std::error::Error for ParseCurrencyError {
fn description(&self) -> &str {
"unknown currency code"
}
}