#[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 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Denomination
Source§impl Debug for Denomination
impl Debug for Denomination
Source§impl Display for Denomination
impl Display for Denomination
impl Eq 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.