From 31f883ac00e9d6887791fb41ac35d3e10b387d58 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Thu, 28 Nov 2024 15:49:01 +1100 Subject: [PATCH] Implement iter::Sum for FeeRate The `FeeRate` implements `ops::Add`, no reason not to enable summing an iterator of fee rates. --- units/src/fee_rate.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/units/src/fee_rate.rs b/units/src/fee_rate.rs index 4ed19f685..c6f3f76fb 100644 --- a/units/src/fee_rate.rs +++ b/units/src/fee_rate.rs @@ -267,6 +267,24 @@ impl SubAssign<&FeeRate> for FeeRate { fn sub_assign(&mut self, rhs: &FeeRate) { self.0 -= rhs.0 } } +impl core::iter::Sum for FeeRate { + fn sum(iter: I) -> Self + where + I: Iterator, + { + FeeRate::from_sat_per_kwu(iter.map(FeeRate::to_sat_per_kwu).sum()) + } +} + +impl<'a> core::iter::Sum<&'a FeeRate> for FeeRate { + fn sum(iter: I) -> Self + where + I: Iterator, + { + FeeRate::from_sat_per_kwu(iter.map(|f| FeeRate::to_sat_per_kwu(*f)).sum()) + } +} + crate::impl_parse_str_from_int_infallible!(FeeRate, u64, from_sat_per_kwu); #[cfg(test)]