fixed_bigint/fixeduint/
iter_impl.rs1use super::{FixedUInt, MachineWord};
2use crate::personality::Personality;
3use num_traits::{One, Zero};
4
5impl<T: MachineWord, const N: usize, P: Personality> core::iter::Sum for FixedUInt<T, N, P> {
6 fn sum<I: Iterator<Item = Self>>(iter: I) -> Self {
7 iter.fold(Self::zero(), |acc, x| acc + x)
8 }
9}
10
11impl<'a, T: MachineWord, const N: usize, P: Personality> core::iter::Sum<&'a Self>
12 for FixedUInt<T, N, P>
13{
14 fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
15 iter.fold(Self::zero(), |acc, x| acc + *x)
16 }
17}
18
19impl<T: MachineWord, const N: usize, P: Personality> core::iter::Product for FixedUInt<T, N, P> {
20 fn product<I: Iterator<Item = Self>>(iter: I) -> Self {
21 iter.fold(Self::one(), |acc, x| acc * x)
22 }
23}
24
25impl<'a, T: MachineWord, const N: usize, P: Personality> core::iter::Product<&'a Self>
26 for FixedUInt<T, N, P>
27{
28 fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
29 iter.fold(Self::one(), |acc, x| acc * *x)
30 }
31}