haar_lib/algebra/act/
update_sum.rs1pub use crate::algebra::{act::Act, first_last::Last, traits::*};
3
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
6pub struct UpdateSum<T>(pub Last<T>);
7
8impl<T, M> Act<M> for UpdateSum<T>
9where
10 M: Monoid<Element = T> + Additive,
11{
12 type Monoid = Last<T>;
13 type Element = Option<T>;
14
15 fn monoid(&self) -> &Self::Monoid {
16 &self.0
17 }
18 fn act(&self, m: &M, val: <M>::Element, a: Self::Element, len: usize) -> <M>::Element {
19 match a {
20 Some(a) => Additive::times(m, a, len as u64),
21 _ => val,
22 }
23 }
24}