diff --git a/units/src/fee_rate.rs b/units/src/fee_rate.rs index 8c89cea64..9d8d7ee2a 100644 --- a/units/src/fee_rate.rs +++ b/units/src/fee_rate.rs @@ -96,6 +96,11 @@ impl FeeRate { Some(Amount::from_sat(sats)) } + /// Checked addition. + /// + /// Computes `self + rhs` returning [`None`] if overflow occured. + pub fn checked_add(self, rhs: u64) -> Option { self.0.checked_add(rhs).map(Self) } + /// Calculates the fee by multiplying this fee rate by weight, in weight units, returning [`None`] /// if an overflow occurred. /// @@ -286,6 +291,15 @@ mod tests { assert_eq!(f, FeeRate(1)); } + #[test] + fn checked_add() { + let f = FeeRate(1).checked_add(2).unwrap(); + assert_eq!(FeeRate(3), f); + + let f = FeeRate(u64::MAX).checked_add(1); + assert!(f.is_none()); + } + #[test] fn fee_rate_const_test() { assert_eq!(0, FeeRate::ZERO.to_sat_per_kwu());