#[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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
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§
Trait Implementations§
Source§impl<'a> Arbitrary<'a> for Denomination
Available on crate feature arbitrary only.
impl<'a> Arbitrary<'a> for Denomination
Available on crate feature
arbitrary only.Source§fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
Generate an arbitrary value of
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>
Generate an arbitrary value of
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>)
Get a size hint for how many bytes out of an
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>
Get a size hint for how many bytes out of an
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
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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<Self, Self::Err>
fn from_str(s: &str) -> Result<Self, Self::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.
Source§type Err = ParseDenominationError
type Err = ParseDenominationError
The associated error which can be returned from parsing.
Source§impl Hash for Denomination
impl Hash for Denomination
Source§impl PartialEq for Denomination
impl PartialEq for Denomination
impl Copy for Denomination
impl Eq for Denomination
impl StructuralPartialEq for Denomination
Auto Trait Implementations§
impl Freeze for Denomination
impl RefUnwindSafe for Denomination
impl Send for Denomination
impl Sync for Denomination
impl Unpin for Denomination
impl UnsafeUnpin for Denomination
impl UnwindSafe for Denomination
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more