From cb2146d5fac37ea7f68caa7cb92a0e44e1bb4c41 Mon Sep 17 00:00:00 2001 From: yancy Date: Sat, 21 Sep 2024 09:33:58 -0500 Subject: [PATCH] Implement FeeRate checked_sub --- units/src/fee_rate.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/units/src/fee_rate.rs b/units/src/fee_rate.rs index 9d8d7ee2a..7edc8cc17 100644 --- a/units/src/fee_rate.rs +++ b/units/src/fee_rate.rs @@ -101,6 +101,11 @@ impl FeeRate { /// Computes `self + rhs` returning [`None`] if overflow occured. pub fn checked_add(self, rhs: u64) -> Option { self.0.checked_add(rhs).map(Self) } + /// Checked subtraction. + /// + /// Computes `self - rhs` returning [`None`] if overflow occured. + pub fn checked_sub(self, rhs: u64) -> Option { self.0.checked_sub(rhs).map(Self) } + /// Calculates the fee by multiplying this fee rate by weight, in weight units, returning [`None`] /// if an overflow occurred. /// @@ -300,6 +305,15 @@ mod tests { assert!(f.is_none()); } + #[test] + fn checked_sub() { + let f = FeeRate(2).checked_sub(1).unwrap(); + assert_eq!(FeeRate(1), f); + + let f = FeeRate::ZERO.checked_sub(1); + assert!(f.is_none()); + } + #[test] fn fee_rate_const_test() { assert_eq!(0, FeeRate::ZERO.to_sat_per_kwu());