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());