feat: added more ethereum units (#1760)
This commit is contained in:
parent
f3a5a7aef0
commit
0c2abf9d7f
|
@ -6,8 +6,16 @@ use std::{convert::TryFrom, fmt, str::FromStr};
|
||||||
pub enum Units {
|
pub enum Units {
|
||||||
/// Wei is equivalent to 1 wei.
|
/// Wei is equivalent to 1 wei.
|
||||||
Wei,
|
Wei,
|
||||||
|
/// Kwei is equivalent to 1e3 wei.
|
||||||
|
Kwei,
|
||||||
|
/// Mwei is equivalent to 1e6 wei.
|
||||||
|
Mwei,
|
||||||
/// Gwei is equivalent to 1e9 wei.
|
/// Gwei is equivalent to 1e9 wei.
|
||||||
Gwei,
|
Gwei,
|
||||||
|
/// Twei is equivalent to 1e12 wei.
|
||||||
|
Twei,
|
||||||
|
/// Pwei is equivalent to 1e15 wei.
|
||||||
|
Pwei,
|
||||||
/// Ether is equivalent to 1e18 wei.
|
/// Ether is equivalent to 1e18 wei.
|
||||||
Ether,
|
Ether,
|
||||||
/// Other less frequent unit sizes, equivalent to 1e{0} wei.
|
/// Other less frequent unit sizes, equivalent to 1e{0} wei.
|
||||||
|
@ -74,7 +82,11 @@ impl FromStr for Units {
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
Ok(match s.to_lowercase().as_str() {
|
Ok(match s.to_lowercase().as_str() {
|
||||||
"eth" | "ether" => Units::Ether,
|
"eth" | "ether" => Units::Ether,
|
||||||
"gwei" | "nano" | "nanoether" => Units::Gwei,
|
"pwei" | "milli" | "milliether" | "finney" => Units::Pwei,
|
||||||
|
"twei" | "micro" | "microether" | "szabo" => Units::Twei,
|
||||||
|
"gwei" | "nano" | "nanoether" | "shannon" => Units::Gwei,
|
||||||
|
"mwei" | "pico" | "picoether" | "lovelace" => Units::Mwei,
|
||||||
|
"kwei" | "femto" | "femtoether" | "babbage" => Units::Kwei,
|
||||||
"wei" => Units::Wei,
|
"wei" => Units::Wei,
|
||||||
_ => return Err(ConversionError::UnrecognizedUnits(s.to_string())),
|
_ => return Err(ConversionError::UnrecognizedUnits(s.to_string())),
|
||||||
})
|
})
|
||||||
|
@ -103,7 +115,11 @@ impl Units {
|
||||||
pub fn as_num(&self) -> u32 {
|
pub fn as_num(&self) -> u32 {
|
||||||
match self {
|
match self {
|
||||||
Units::Wei => 0,
|
Units::Wei => 0,
|
||||||
|
Units::Kwei => 3,
|
||||||
|
Units::Mwei => 6,
|
||||||
Units::Gwei => 9,
|
Units::Gwei => 9,
|
||||||
|
Units::Twei => 12,
|
||||||
|
Units::Pwei => 15,
|
||||||
Units::Ether => 18,
|
Units::Ether => 18,
|
||||||
Units::Other(inner) => *inner,
|
Units::Other(inner) => *inner,
|
||||||
}
|
}
|
||||||
|
@ -118,7 +134,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_units() {
|
fn test_units() {
|
||||||
assert_eq!(Wei.as_num(), 0);
|
assert_eq!(Wei.as_num(), 0);
|
||||||
|
assert_eq!(Kwei.as_num(), 3);
|
||||||
|
assert_eq!(Mwei.as_num(), 6);
|
||||||
assert_eq!(Gwei.as_num(), 9);
|
assert_eq!(Gwei.as_num(), 9);
|
||||||
|
assert_eq!(Twei.as_num(), 12);
|
||||||
|
assert_eq!(Pwei.as_num(), 15);
|
||||||
assert_eq!(Ether.as_num(), 18);
|
assert_eq!(Ether.as_num(), 18);
|
||||||
assert_eq!(Other(10).as_num(), 10);
|
assert_eq!(Other(10).as_num(), 10);
|
||||||
assert_eq!(Other(20).as_num(), 20);
|
assert_eq!(Other(20).as_num(), 20);
|
||||||
|
@ -127,15 +147,27 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_into() {
|
fn test_into() {
|
||||||
assert_eq!(Units::try_from("wei").unwrap(), Wei);
|
assert_eq!(Units::try_from("wei").unwrap(), Wei);
|
||||||
|
assert_eq!(Units::try_from("kwei").unwrap(), Kwei);
|
||||||
|
assert_eq!(Units::try_from("mwei").unwrap(), Mwei);
|
||||||
assert_eq!(Units::try_from("gwei").unwrap(), Gwei);
|
assert_eq!(Units::try_from("gwei").unwrap(), Gwei);
|
||||||
|
assert_eq!(Units::try_from("twei").unwrap(), Twei);
|
||||||
|
assert_eq!(Units::try_from("pwei").unwrap(), Pwei);
|
||||||
assert_eq!(Units::try_from("ether").unwrap(), Ether);
|
assert_eq!(Units::try_from("ether").unwrap(), Ether);
|
||||||
|
|
||||||
assert_eq!(Units::try_from("wei".to_string()).unwrap(), Wei);
|
assert_eq!(Units::try_from("wei".to_string()).unwrap(), Wei);
|
||||||
|
assert_eq!(Units::try_from("kwei".to_string()).unwrap(), Kwei);
|
||||||
|
assert_eq!(Units::try_from("mwei".to_string()).unwrap(), Mwei);
|
||||||
assert_eq!(Units::try_from("gwei".to_string()).unwrap(), Gwei);
|
assert_eq!(Units::try_from("gwei".to_string()).unwrap(), Gwei);
|
||||||
|
assert_eq!(Units::try_from("twei".to_string()).unwrap(), Twei);
|
||||||
|
assert_eq!(Units::try_from("pwei".to_string()).unwrap(), Pwei);
|
||||||
assert_eq!(Units::try_from("ether".to_string()).unwrap(), Ether);
|
assert_eq!(Units::try_from("ether".to_string()).unwrap(), Ether);
|
||||||
|
|
||||||
assert_eq!(Units::try_from(&"wei".to_string()).unwrap(), Wei);
|
assert_eq!(Units::try_from(&"wei".to_string()).unwrap(), Wei);
|
||||||
|
assert_eq!(Units::try_from(&"kwei".to_string()).unwrap(), Kwei);
|
||||||
|
assert_eq!(Units::try_from(&"mwei".to_string()).unwrap(), Mwei);
|
||||||
assert_eq!(Units::try_from(&"gwei".to_string()).unwrap(), Gwei);
|
assert_eq!(Units::try_from(&"gwei".to_string()).unwrap(), Gwei);
|
||||||
|
assert_eq!(Units::try_from(&"twei".to_string()).unwrap(), Twei);
|
||||||
|
assert_eq!(Units::try_from(&"pwei".to_string()).unwrap(), Pwei);
|
||||||
assert_eq!(Units::try_from(&"ether".to_string()).unwrap(), Ether);
|
assert_eq!(Units::try_from(&"ether".to_string()).unwrap(), Ether);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue