diff --git a/api/units/all-features.txt b/api/units/all-features.txt index 27369ab25..8822fa7e7 100644 --- a/api/units/all-features.txt +++ b/api/units/all-features.txt @@ -723,6 +723,7 @@ pub const fn bitcoin_units::SignedAmount::checked_rem(self, rhs: i64) -> core::o pub const fn bitcoin_units::SignedAmount::checked_sub(self, rhs: bitcoin_units::SignedAmount) -> core::option::Option pub const fn bitcoin_units::SignedAmount::from_int_btc_const(whole_bitcoin: i64) -> bitcoin_units::SignedAmount pub const fn bitcoin_units::SignedAmount::from_sat(satoshi: i64) -> bitcoin_units::SignedAmount +pub const fn bitcoin_units::SignedAmount::from_sat_unchecked(satoshi: i64) -> bitcoin_units::SignedAmount pub const fn bitcoin_units::SignedAmount::to_sat(self) -> i64 pub const fn bitcoin_units::block::BlockHeight::from_u32(inner: u32) -> Self pub const fn bitcoin_units::block::BlockHeight::to_u32(self) -> u32 diff --git a/api/units/alloc-only.txt b/api/units/alloc-only.txt index bfe3a73d1..847e589cf 100644 --- a/api/units/alloc-only.txt +++ b/api/units/alloc-only.txt @@ -674,6 +674,7 @@ pub const fn bitcoin_units::SignedAmount::checked_rem(self, rhs: i64) -> core::o pub const fn bitcoin_units::SignedAmount::checked_sub(self, rhs: bitcoin_units::SignedAmount) -> core::option::Option pub const fn bitcoin_units::SignedAmount::from_int_btc_const(whole_bitcoin: i64) -> bitcoin_units::SignedAmount pub const fn bitcoin_units::SignedAmount::from_sat(satoshi: i64) -> bitcoin_units::SignedAmount +pub const fn bitcoin_units::SignedAmount::from_sat_unchecked(satoshi: i64) -> bitcoin_units::SignedAmount pub const fn bitcoin_units::SignedAmount::to_sat(self) -> i64 pub const fn bitcoin_units::block::BlockHeight::from_u32(inner: u32) -> Self pub const fn bitcoin_units::block::BlockHeight::to_u32(self) -> u32 diff --git a/api/units/no-features.txt b/api/units/no-features.txt index 60c1ac1b8..4da185122 100644 --- a/api/units/no-features.txt +++ b/api/units/no-features.txt @@ -656,6 +656,7 @@ pub const fn bitcoin_units::SignedAmount::checked_rem(self, rhs: i64) -> core::o pub const fn bitcoin_units::SignedAmount::checked_sub(self, rhs: bitcoin_units::SignedAmount) -> core::option::Option pub const fn bitcoin_units::SignedAmount::from_int_btc_const(whole_bitcoin: i64) -> bitcoin_units::SignedAmount pub const fn bitcoin_units::SignedAmount::from_sat(satoshi: i64) -> bitcoin_units::SignedAmount +pub const fn bitcoin_units::SignedAmount::from_sat_unchecked(satoshi: i64) -> bitcoin_units::SignedAmount pub const fn bitcoin_units::SignedAmount::to_sat(self) -> i64 pub const fn bitcoin_units::block::BlockHeight::from_u32(inner: u32) -> Self pub const fn bitcoin_units::block::BlockHeight::to_u32(self) -> u32 diff --git a/units/src/amount/signed.rs b/units/src/amount/signed.rs index 2faa7e45f..1c93bd198 100644 --- a/units/src/amount/signed.rs +++ b/units/src/amount/signed.rs @@ -83,6 +83,15 @@ impl SignedAmount { /// ``` pub const fn to_sat(self) -> i64 { self.0 } + /// Constructs a new [`SignedAmount`] with satoshi precision and the given number of satoshis. + /// + /// Caller to guarantee that `satoshi` is within valid range. + /// + /// See [`Self::MIN`] and [`Self::MAX_MONEY`]. + pub const fn from_sat_unchecked(satoshi: i64) -> SignedAmount { + SignedAmount(satoshi) + } + /// Converts from a value expressing a decimal number of bitcoin to a [`SignedAmount`]. /// /// # Errors