Sum Apply implementation improvements dev

Mon, 21 Oct 2024 09:11:34 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Mon, 21 Oct 2024 09:11:34 -0500
branch
dev
changeset 42
b4d369698556
parent 41
121cf065e9ed
child 43
239aa32f0e7d

Sum Apply implementation improvements

src/mapping.rs file | annotate | diff | comparison | revisions
--- a/src/mapping.rs	Sun Oct 20 23:53:43 2024 -0500
+++ b/src/mapping.rs	Mon Oct 21 09:11:34 2024 -0500
@@ -118,12 +118,22 @@
 }
 
 
-impl<Domain : Copy, M> Apply<Domain> for Sum<Domain, M>
+impl<Domain, M> Apply<Domain> for Sum<Domain, M>
 where M : Mapping<Domain>,
       M::Codomain : std::iter::Sum {
     type Output = M::Codomain;
 
     fn apply(&self, x : Domain) -> Self::Output {
+        self.components.iter().map(|c| c.apply(&x)).sum()
+    }
+}
+
+impl<'a, Domain, M> Apply<&'a Domain> for Sum<Domain, M>
+where M : Mapping<Domain>,
+      M::Codomain : std::iter::Sum {
+    type Output = M::Codomain;
+
+    fn apply(&self, x : &'a Domain) -> Self::Output {
         self.components.iter().map(|c| c.apply(x)).sum()
     }
 }

mercurial