Mon, 21 Oct 2024 09:11:34 -0500
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() } }