#[non_exhaustive]pub enum Denomination {
Bitcoin,
CentiBitcoin,
MilliBitcoin,
MicroBitcoin,
Bit,
Satoshi,
}Expand description
A set of denominations in which amounts can be expressed.
§Accepted Denominations
All upper or lower case, excluding SI prefixes c, m and u (or µ) which must be lower case.
- Singular: BTC, cBTC, mBTC, uBTC
- Plural or singular: sat, satoshi, bit
§Note
Due to ambiguity between mega and milli we prohibit usage of leading capital ‘M’. It is more important to protect users from incorrectly using a capital M to mean milli than to allow Megabitcoin which is not a realistic denomination, and Megasatoshi which is equivalent to cBTC which is allowed.
§Examples
let equal = [
("1 BTC", 100_000_000),
("1 cBTC", 1_000_000),
("1 mBTC", 100_000),
("1 uBTC", 100),
("1 bit", 100),
("1 sat", 1),
];
for (string, sats) in equal {
assert_eq!(
string.parse::<Amount>().expect("valid bitcoin amount string"),
Amount::from_sat(sats)?,
)
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Bitcoin
BTC (1 BTC = 100,000,000 satoshi).
CentiBitcoin
cBTC (1 cBTC = 1,000,000 satoshi).
MilliBitcoin
mBTC (1 mBTC = 100,000 satoshi).
MicroBitcoin
µBTC (1 µBTC = 100 satoshi).
Bit
bits (bits = µBTC).
Satoshi
satoshi (1 BTC = 100,000,000 satoshi).
Implementations§
Source§impl Denomination
impl Denomination
Sourcepub const BTC: Denomination = Self::Bitcoin
pub const BTC: Denomination = Self::Bitcoin
Convenience alias for Denomination::Bitcoin.
Sourcepub const SAT: Denomination = Self::Satoshi
pub const SAT: Denomination = Self::Satoshi
Convenience alias for Denomination::Satoshi.
Trait Implementations§
Source§impl<'a> Arbitrary<'a> for Denomination
Available on crate feature arbitrary only.
impl<'a> Arbitrary<'a> for Denomination
arbitrary only.Source§fn arbitrary(u: &mut Unstructured<'a>) -> Result<Denomination, Error>
fn arbitrary(u: &mut Unstructured<'a>) -> Result<Denomination, Error>
Self from the given unstructured data. Read moreSource§fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
Self from the entirety of the given
unstructured data. Read moreSource§fn size_hint(depth: usize) -> (usize, Option<usize>)
fn size_hint(depth: usize) -> (usize, Option<usize>)
Unstructured this type
needs to construct itself. Read moreSource§fn try_size_hint(
depth: usize,
) -> Result<(usize, Option<usize>), MaxRecursionReached>
fn try_size_hint( depth: usize, ) -> Result<(usize, Option<usize>), MaxRecursionReached>
Unstructured this type
needs to construct itself. Read moreSource§impl Clone for Denomination
impl Clone for Denomination
Source§fn clone(&self) -> Denomination
fn clone(&self) -> Denomination
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Denomination
impl Debug for Denomination
Source§impl Display for Denomination
impl Display for Denomination
Source§impl FromStr for Denomination
impl FromStr for Denomination
Source§fn from_str(s: &str) -> Result<Denomination, <Denomination as FromStr>::Err>
fn from_str(s: &str) -> Result<Denomination, <Denomination as FromStr>::Err>
Converts from a str to a Denomination.
§Errors
ParseDenominationError::PossiblyConfusing: If the denomination begins with a capital letter that could be confused with centi, milli, or micro-bitcoin.ParseDenominationError::Unknown: If an unknown denomination is used.