Implement iter::Sum for FeeRate

The `FeeRate` implements `ops::Add`, no reason not to enable summing an
iterator of fee rates.
This commit is contained in:
Tobin C. Harding 2024-11-28 15:49:01 +11:00
parent 3a73a480c8
commit 31f883ac00
No known key found for this signature in database
GPG Key ID: 40BF9E4C269D6607
1 changed files with 18 additions and 0 deletions

View File

@ -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<I>(iter: I) -> Self
where
I: Iterator<Item = Self>,
{
FeeRate::from_sat_per_kwu(iter.map(FeeRate::to_sat_per_kwu).sum())
}
}
impl<'a> core::iter::Sum<&'a FeeRate> for FeeRate {
fn sum<I>(iter: I) -> Self
where
I: Iterator<Item = &'a FeeRate>,
{
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)]