Trait segment_tree::ops::Operation
[−]
[src]
pub trait Operation<N> { fn combine(a: &N, b: &N) -> N; fn combine_mut(a: &mut N, b: &N) { ... } fn combine_mut2(a: &N, b: &mut N) { ... } fn combine_left(a: N, b: &N) -> N { ... } fn combine_right(a: &N, b: N) -> N { ... } fn combine_both(a: N, b: N) -> N { ... } }
A trait that specifies which associative operator to use in a segment tree.
Required Methods
fn combine(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
fn combine_mut(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
.
fn combine_mut2(a: &N, b: &mut N)
Replace the value in a with combine(a, b)
. This function exists to allow certain
optimizations and by default simply calls combine
.
fn combine_left(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
.
fn combine_right(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
.
fn combine_both(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
impl Operation<u8> for Add
impl Operation<u8> for Mul
impl Operation<u8> for Xor
impl Operation<u8> for And
impl Operation<u8> for Or
impl Operation<Wrapping<u8>> for Add
impl Operation<Wrapping<u8>> for Mul
impl Operation<Wrapping<u8>> for Xor
impl Operation<Wrapping<u8>> for And
impl Operation<Wrapping<u8>> for Or
impl Operation<u16> for Add
impl Operation<u16> for Mul
impl Operation<u16> for Xor
impl Operation<u16> for And
impl Operation<u16> for Or
impl Operation<Wrapping<u16>> for Add
impl Operation<Wrapping<u16>> for Mul
impl Operation<Wrapping<u16>> for Xor
impl Operation<Wrapping<u16>> for And
impl Operation<Wrapping<u16>> for Or
impl Operation<u32> for Add
impl Operation<u32> for Mul
impl Operation<u32> for Xor
impl Operation<u32> for And
impl Operation<u32> for Or
impl Operation<Wrapping<u32>> for Add
impl Operation<Wrapping<u32>> for Mul
impl Operation<Wrapping<u32>> for Xor
impl Operation<Wrapping<u32>> for And
impl Operation<Wrapping<u32>> for Or
impl Operation<u64> for Add
impl Operation<u64> for Mul
impl Operation<u64> for Xor
impl Operation<u64> for And
impl Operation<u64> for Or
impl Operation<Wrapping<u64>> for Add
impl Operation<Wrapping<u64>> for Mul
impl Operation<Wrapping<u64>> for Xor
impl Operation<Wrapping<u64>> for And
impl Operation<Wrapping<u64>> for Or
impl Operation<i8> for Add
impl Operation<i8> for Mul
impl Operation<i8> for Xor
impl Operation<i8> for And
impl Operation<i8> for Or
impl Operation<Wrapping<i8>> for Add
impl Operation<Wrapping<i8>> for Mul
impl Operation<Wrapping<i8>> for Xor
impl Operation<Wrapping<i8>> for And
impl Operation<Wrapping<i8>> for Or
impl Operation<i16> for Add
impl Operation<i16> for Mul
impl Operation<i16> for Xor
impl Operation<i16> for And
impl Operation<i16> for Or
impl Operation<Wrapping<i16>> for Add
impl Operation<Wrapping<i16>> for Mul
impl Operation<Wrapping<i16>> for Xor
impl Operation<Wrapping<i16>> for And
impl Operation<Wrapping<i16>> for Or
impl Operation<i32> for Add
impl Operation<i32> for Mul
impl Operation<i32> for Xor
impl Operation<i32> for And
impl Operation<i32> for Or
impl Operation<Wrapping<i32>> for Add
impl Operation<Wrapping<i32>> for Mul
impl Operation<Wrapping<i32>> for Xor
impl Operation<Wrapping<i32>> for And
impl Operation<Wrapping<i32>> for Or
impl Operation<i64> for Add
impl Operation<i64> for Mul
impl Operation<i64> for Xor
impl Operation<i64> for And
impl Operation<i64> for Or
impl Operation<Wrapping<i64>> for Add
impl Operation<Wrapping<i64>> for Mul
impl Operation<Wrapping<i64>> for Xor
impl Operation<Wrapping<i64>> for And
impl Operation<Wrapping<i64>> for Or
impl Operation<usize> for Add
impl Operation<usize> for Mul
impl Operation<usize> for Xor
impl Operation<usize> for And
impl Operation<usize> for Or
impl Operation<Wrapping<usize>> for Add
impl Operation<Wrapping<usize>> for Mul
impl Operation<Wrapping<usize>> for Xor
impl Operation<Wrapping<usize>> for And
impl Operation<Wrapping<usize>> for Or
impl Operation<isize> for Add
impl Operation<isize> for Mul
impl Operation<isize> for Xor
impl Operation<isize> for And
impl Operation<isize> for Or
impl Operation<Wrapping<isize>> for Add
impl Operation<Wrapping<isize>> for Mul
impl Operation<Wrapping<isize>> for Xor
impl Operation<Wrapping<isize>> for And
impl Operation<Wrapping<isize>> for Or
impl Operation<f32> for Add
impl Operation<f32> for Mul
impl Operation<f64> for Add
impl Operation<f64> for Mul
impl Operation<u8> for Max
impl Operation<u8> for Min
impl Operation<u16> for Max
impl Operation<u16> for Min
impl Operation<u32> for Max
impl Operation<u32> for Min
impl Operation<u64> for Max
impl Operation<u64> for Min
impl Operation<i8> for Max
impl Operation<i8> for Min
impl Operation<i16> for Max
impl Operation<i16> for Min
impl Operation<i32> for Max
impl Operation<i32> for Min
impl Operation<i64> for Max
impl Operation<i64> for Min
impl Operation<usize> for Max
impl Operation<usize> for Min
impl Operation<isize> for Max
impl Operation<isize> for Min
impl Operation<f32> for MaxIgnoreNaN
impl Operation<f64> for MaxIgnoreNaN
impl Operation<f32> for MaxTakeNaN
impl Operation<f64> for MaxTakeNaN
impl Operation<f32> for MinIgnoreNaN
impl Operation<f64> for MinIgnoreNaN
impl Operation<f32> for MinTakeNaN
impl Operation<f64> for MinTakeNaN
impl<TA, TB, A: Operation<TA>, B: Operation<TB>> Operation<(TA, TB)> for Pair<A, B>
impl<TA: Clone, A: Operation<TA>> Operation<Option<TA>> for WithIdentity<A>