Trait Operation

Source
pub trait Operation<N> {
    // Required method
    fn combine(&self, a: &N, b: &N) -> N;

    // Provided methods
    fn combine_mut(&self, a: &mut N, b: &N) { ... }
    fn combine_mut2(&self, a: &N, b: &mut N) { ... }
    fn combine_left(&self, a: N, b: &N) -> N { ... }
    fn combine_right(&self, a: &N, b: N) -> N { ... }
    fn combine_both(&self, a: N, b: N) -> N { ... }
}
Expand description

A trait that specifies which associative operator to use in a segment tree.

Required Methods§

Source

fn combine(&self, a: &N, b: &N) -> N

The operation that is performed to combine two intervals in the segment tree.

This function must be associative, that is combine(combine(a, b), c) = combine(a, combine(b, c)).

Provided Methods§

Source

fn combine_mut(&self, a: &mut N, b: &N)

Replace the value in a with combine(a, b). This function exists to allow certain optimizations and by default simply calls combine.

Source

fn combine_mut2(&self, a: &N, b: &mut N)

Replace the value in b with combine(a, b). This function exists to allow certain optimizations and by default simply calls combine.

Source

fn combine_left(&self, a: N, b: &N) -> N

Must return the same as combine. This function exists to allow certain optimizations and by default simply calls combine_mut.

Source

fn combine_right(&self, a: &N, b: N) -> N

Must return the same as combine. This function exists to allow certain optimizations and by default simply calls combine_mut2.

Source

fn combine_both(&self, a: N, b: N) -> N

Must return the same as combine. This function exists to allow certain optimizations and by default simply calls combine_left.

Implementors§

Source§

impl Operation<bool> for And

Source§

impl Operation<bool> for Or

Source§

impl Operation<bool> for Xor

Source§

impl Operation<f32> for Add

Source§

impl Operation<f32> for MaxIgnoreNaN

Source§

impl Operation<f32> for MaxTakeNaN

Source§

impl Operation<f32> for MinIgnoreNaN

Source§

impl Operation<f32> for MinTakeNaN

Source§

impl Operation<f32> for Mul

Source§

impl Operation<f64> for Add

Source§

impl Operation<f64> for MaxIgnoreNaN

Source§

impl Operation<f64> for MaxTakeNaN

Source§

impl Operation<f64> for MinIgnoreNaN

Source§

impl Operation<f64> for MinTakeNaN

Source§

impl Operation<f64> for Mul

Source§

impl Operation<i8> for Add

Source§

impl Operation<i8> for And

Source§

impl Operation<i8> for Max

Source§

impl Operation<i8> for Min

Source§

impl Operation<i8> for Mul

Source§

impl Operation<i8> for Or

Source§

impl Operation<i8> for Xor

Source§

impl Operation<i16> for Add

Source§

impl Operation<i16> for And

Source§

impl Operation<i16> for Max

Source§

impl Operation<i16> for Min

Source§

impl Operation<i16> for Mul

Source§

impl Operation<i16> for Or

Source§

impl Operation<i16> for Xor

Source§

impl Operation<i32> for Add

Source§

impl Operation<i32> for And

Source§

impl Operation<i32> for Max

Source§

impl Operation<i32> for Min

Source§

impl Operation<i32> for Mul

Source§

impl Operation<i32> for Or

Source§

impl Operation<i32> for Xor

Source§

impl Operation<i64> for Add

Source§

impl Operation<i64> for And

Source§

impl Operation<i64> for Max

Source§

impl Operation<i64> for Min

Source§

impl Operation<i64> for Mul

Source§

impl Operation<i64> for Or

Source§

impl Operation<i64> for Xor

Source§

impl Operation<i128> for Add

Source§

impl Operation<i128> for And

Source§

impl Operation<i128> for Max

Source§

impl Operation<i128> for Min

Source§

impl Operation<i128> for Mul

Source§

impl Operation<i128> for Or

Source§

impl Operation<i128> for Xor

Source§

impl Operation<isize> for Add

Source§

impl Operation<isize> for And

Source§

impl Operation<isize> for Max

Source§

impl Operation<isize> for Min

Source§

impl Operation<isize> for Mul

Source§

impl Operation<isize> for Or

Source§

impl Operation<isize> for Xor

Source§

impl Operation<u8> for Add

Source§

impl Operation<u8> for And

Source§

impl Operation<u8> for Max

Source§

impl Operation<u8> for Min

Source§

impl Operation<u8> for Mul

Source§

impl Operation<u8> for Or

Source§

impl Operation<u8> for Xor

Source§

impl Operation<u16> for Add

Source§

impl Operation<u16> for And

Source§

impl Operation<u16> for Max

Source§

impl Operation<u16> for Min

Source§

impl Operation<u16> for Mul

Source§

impl Operation<u16> for Or

Source§

impl Operation<u16> for Xor

Source§

impl Operation<u32> for Add

Source§

impl Operation<u32> for And

Source§

impl Operation<u32> for Max

Source§

impl Operation<u32> for Min

Source§

impl Operation<u32> for Mul

Source§

impl Operation<u32> for Or

Source§

impl Operation<u32> for Xor

Source§

impl Operation<u64> for Add

Source§

impl Operation<u64> for And

Source§

impl Operation<u64> for Max

Source§

impl Operation<u64> for Min

Source§

impl Operation<u64> for Mul

Source§

impl Operation<u64> for Or

Source§

impl Operation<u64> for Xor

Source§

impl Operation<u128> for Add

Source§

impl Operation<u128> for And

Source§

impl Operation<u128> for Max

Source§

impl Operation<u128> for Min

Source§

impl Operation<u128> for Mul

Source§

impl Operation<u128> for Or

Source§

impl Operation<u128> for Xor

Source§

impl Operation<usize> for Add

Source§

impl Operation<usize> for And

Source§

impl Operation<usize> for Max

Source§

impl Operation<usize> for Min

Source§

impl Operation<usize> for Mul

Source§

impl Operation<usize> for Or

Source§

impl Operation<usize> for Xor

Source§

impl Operation<Wrapping<i8>> for Add

Source§

impl Operation<Wrapping<i8>> for Mul

Source§

impl Operation<Wrapping<i16>> for Add

Source§

impl Operation<Wrapping<i16>> for Mul

Source§

impl Operation<Wrapping<i32>> for Add

Source§

impl Operation<Wrapping<i32>> for Mul

Source§

impl Operation<Wrapping<i64>> for Add

Source§

impl Operation<Wrapping<i64>> for Mul

Source§

impl Operation<Wrapping<i128>> for Add

Source§

impl Operation<Wrapping<i128>> for Mul

Source§

impl Operation<Wrapping<isize>> for Add

Source§

impl Operation<Wrapping<isize>> for Mul

Source§

impl Operation<Wrapping<u8>> for Add

Source§

impl Operation<Wrapping<u8>> for Mul

Source§

impl Operation<Wrapping<u16>> for Add

Source§

impl Operation<Wrapping<u16>> for Mul

Source§

impl Operation<Wrapping<u32>> for Add

Source§

impl Operation<Wrapping<u32>> for Mul

Source§

impl Operation<Wrapping<u64>> for Add

Source§

impl Operation<Wrapping<u64>> for Mul

Source§

impl Operation<Wrapping<u128>> for Add

Source§

impl Operation<Wrapping<u128>> for Mul

Source§

impl Operation<Wrapping<usize>> for Add

Source§

impl Operation<Wrapping<usize>> for Mul

Source§

impl Operation<BigInt> for Add

Source§

impl Operation<BigInt> for Mul

Source§

impl Operation<BigUint> for Add

Source§

impl Operation<BigUint> for Mul

Source§

impl<TA, TB, A: Operation<TA>, B: Operation<TB>> Operation<(TA, TB)> for Pair<A, B>