Implement std::iter::Sum for Loc<F, N> dev

Fri, 28 Apr 2023 09:03:21 +0300

author
Tuomo Valkonen <tuomov@iki.fi>
date
Fri, 28 Apr 2023 09:03:21 +0300
branch
dev
changeset 28
331345346e7b
parent 27
00029c20c0ee
child 29
7fd0984743b5

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> {

mercurial