Merge rust-bitcoin/rust-bitcoin#4127: units: Prevent casting pub enums as ints
97453ef9bc
units: Prevent casting pub enums as ints (Tobin C. Harding) Pull request description: A public enum with simple variants gets an automatic integer variant that can be cast by library consumers. This puts a unnecessary maintenance burden upon us because we cannot then add variants in the middle of others. Add a hidden variant to the single public non-error enum in `units`. ACKs for top commit: Kixunil: ACK97453ef9bc
apoelstra: ACK 97453ef9bc2b99a67252419ff015f13679df7312; successfully ran local tests Tree-SHA512: 2515152107fb21a2dbdef9b46308fef6bd45f4a9719da7a39149b3bdbce6a93dc0f98e112ac246eb32dbe4df1210d5e6328c26ea8678e3da15276e893b39cc9c
This commit is contained in:
commit
1a18ff582c
|
@ -91,6 +91,10 @@ pub enum Denomination {
|
|||
Bit,
|
||||
/// satoshi (1 BTC = 100,000,000 satoshi).
|
||||
Satoshi,
|
||||
/// Stops users from casting this enum to an integer.
|
||||
// May get removed if one day Rust supports disabling casts natively.
|
||||
#[doc(hidden)]
|
||||
_DoNotUse(Infallible),
|
||||
}
|
||||
|
||||
impl Denomination {
|
||||
|
@ -109,6 +113,7 @@ impl Denomination {
|
|||
Denomination::MicroBitcoin => -2,
|
||||
Denomination::Bit => -2,
|
||||
Denomination::Satoshi => 0,
|
||||
Denomination::_DoNotUse(infallible) => match infallible {}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -121,6 +126,7 @@ impl Denomination {
|
|||
Denomination::MicroBitcoin => "uBTC",
|
||||
Denomination::Bit => "bits",
|
||||
Denomination::Satoshi => "satoshi",
|
||||
Denomination::_DoNotUse(infallible) => match infallible {}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue