pub trait Ops {
    type S;
    type F;

    // Required methods
    fn op(&self, a: Self::S, b: Self::S) -> Self::S;
    fn e(&self) -> Self::S;
    fn compose(&self, f: Self::F, g: Self::F) -> Self::F;
    fn id(&self) -> Self::F;
    fn map(&self, f: Self::F, x: Self::S) -> Self::S;
}

Required Associated Types§

Source

type S

Source

type F

Required Methods§

Source

fn op(&self, a: Self::S, b: Self::S) -> Self::S

Source

fn e(&self) -> Self::S

Source

fn compose(&self, f: Self::F, g: Self::F) -> Self::F

Source

fn id(&self) -> Self::F

Source

fn map(&self, f: Self::F, x: Self::S) -> Self::S

Implementors§

Source§

impl Ops for RangeXorRangeInversion01

Source§

type F = i64

Source§

type S = (i64, i64, i64)

Source§

impl Ops for RangeAddRangeSumI64

Source§

type F = i64

Source§

type S = (i64, i64)

Source§

impl<T> Ops for RangeAddRangeMinimum<T>
where T: Ord + Clone + Add<Output = T>,

Source§

type F = T

Source§

type S = T

Source§

impl<T> Ops for RangeAffineRangeSum<T>
where T: From<i32> + Clone + Mul<Output = T> + Add<Output = T>,

Source§

impl<T> Ops for RangeUpdateRangeSum<T>
where T: Ord + Clone + Add<Output = T> + Mul<Output = T>,

Source§

impl<T: Ord + Clone> Ops for RangeUpdateRangeMinimum<T>

Source§

type F = Option<T>

Source§

type S = T