Fri, 28 Apr 2023 09:03:21 +0300
Implement std::iter::Sum for Loc<F, N>
src/loc.rs | file | annotate | diff | comparison | revisions |
--- a/src/loc.rs Fri Apr 28 08:32:15 2023 +0300 +++ b/src/loc.rs Fri Apr 28 09:03:21 2023 +0300 @@ -237,6 +237,20 @@ make_binop!(Add, add, AddAssign, add_assign); make_binop!(Sub, sub, SubAssign, sub_assign); +impl<F : Float, const N : usize> std::iter::Sum for Loc<F, N> { + fn sum<I: Iterator<Item = Loc<F, N>>>(mut iter: I) -> Self { + match iter.next() { + None => Self::ORIGIN, + Some(mut v) => { + for w in iter { + v += w + } + v + } + } + } +} + macro_rules! make_scalarop_rhs { ($trait:ident, $fn:ident, $trait_assign:ident, $fn_assign:ident) => { impl<F : Num, const N : usize> $trait<F> for Loc<F, N> {