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 Addimpl Operation<u8> for Mulimpl Operation<u8> for Xorimpl Operation<u8> for Andimpl Operation<u8> for Orimpl Operation<Wrapping<u8>> for Addimpl Operation<Wrapping<u8>> for Mulimpl Operation<Wrapping<u8>> for Xorimpl Operation<Wrapping<u8>> for Andimpl Operation<Wrapping<u8>> for Orimpl Operation<u16> for Addimpl Operation<u16> for Mulimpl Operation<u16> for Xorimpl Operation<u16> for Andimpl Operation<u16> for Orimpl Operation<Wrapping<u16>> for Addimpl Operation<Wrapping<u16>> for Mulimpl Operation<Wrapping<u16>> for Xorimpl Operation<Wrapping<u16>> for Andimpl Operation<Wrapping<u16>> for Orimpl Operation<u32> for Addimpl Operation<u32> for Mulimpl Operation<u32> for Xorimpl Operation<u32> for Andimpl Operation<u32> for Orimpl Operation<Wrapping<u32>> for Addimpl Operation<Wrapping<u32>> for Mulimpl Operation<Wrapping<u32>> for Xorimpl Operation<Wrapping<u32>> for Andimpl Operation<Wrapping<u32>> for Orimpl Operation<u64> for Addimpl Operation<u64> for Mulimpl Operation<u64> for Xorimpl Operation<u64> for Andimpl Operation<u64> for Orimpl Operation<Wrapping<u64>> for Addimpl Operation<Wrapping<u64>> for Mulimpl Operation<Wrapping<u64>> for Xorimpl Operation<Wrapping<u64>> for Andimpl Operation<Wrapping<u64>> for Orimpl Operation<i8> for Addimpl Operation<i8> for Mulimpl Operation<i8> for Xorimpl Operation<i8> for Andimpl Operation<i8> for Orimpl Operation<Wrapping<i8>> for Addimpl Operation<Wrapping<i8>> for Mulimpl Operation<Wrapping<i8>> for Xorimpl Operation<Wrapping<i8>> for Andimpl Operation<Wrapping<i8>> for Orimpl Operation<i16> for Addimpl Operation<i16> for Mulimpl Operation<i16> for Xorimpl Operation<i16> for Andimpl Operation<i16> for Orimpl Operation<Wrapping<i16>> for Addimpl Operation<Wrapping<i16>> for Mulimpl Operation<Wrapping<i16>> for Xorimpl Operation<Wrapping<i16>> for Andimpl Operation<Wrapping<i16>> for Orimpl Operation<i32> for Addimpl Operation<i32> for Mulimpl Operation<i32> for Xorimpl Operation<i32> for Andimpl Operation<i32> for Orimpl Operation<Wrapping<i32>> for Addimpl Operation<Wrapping<i32>> for Mulimpl Operation<Wrapping<i32>> for Xorimpl Operation<Wrapping<i32>> for Andimpl Operation<Wrapping<i32>> for Orimpl Operation<i64> for Addimpl Operation<i64> for Mulimpl Operation<i64> for Xorimpl Operation<i64> for Andimpl Operation<i64> for Orimpl Operation<Wrapping<i64>> for Addimpl Operation<Wrapping<i64>> for Mulimpl Operation<Wrapping<i64>> for Xorimpl Operation<Wrapping<i64>> for Andimpl Operation<Wrapping<i64>> for Orimpl Operation<usize> for Addimpl Operation<usize> for Mulimpl Operation<usize> for Xorimpl Operation<usize> for Andimpl Operation<usize> for Orimpl Operation<Wrapping<usize>> for Addimpl Operation<Wrapping<usize>> for Mulimpl Operation<Wrapping<usize>> for Xorimpl Operation<Wrapping<usize>> for Andimpl Operation<Wrapping<usize>> for Orimpl Operation<isize> for Addimpl Operation<isize> for Mulimpl Operation<isize> for Xorimpl Operation<isize> for Andimpl Operation<isize> for Orimpl Operation<Wrapping<isize>> for Addimpl Operation<Wrapping<isize>> for Mulimpl Operation<Wrapping<isize>> for Xorimpl Operation<Wrapping<isize>> for Andimpl Operation<Wrapping<isize>> for Orimpl Operation<f32> for Addimpl Operation<f32> for Mulimpl Operation<f64> for Addimpl Operation<f64> for Mulimpl Operation<u8> for Maximpl Operation<u8> for Minimpl Operation<u16> for Maximpl Operation<u16> for Minimpl Operation<u32> for Maximpl Operation<u32> for Minimpl Operation<u64> for Maximpl Operation<u64> for Minimpl Operation<i8> for Maximpl Operation<i8> for Minimpl Operation<i16> for Maximpl Operation<i16> for Minimpl Operation<i32> for Maximpl Operation<i32> for Minimpl Operation<i64> for Maximpl Operation<i64> for Minimpl Operation<usize> for Maximpl Operation<usize> for Minimpl Operation<isize> for Maximpl Operation<isize> for Minimpl Operation<f32> for MaxIgnoreNaNimpl Operation<f64> for MaxIgnoreNaNimpl Operation<f32> for MaxTakeNaNimpl Operation<f64> for MaxTakeNaNimpl Operation<f32> for MinIgnoreNaNimpl Operation<f64> for MinIgnoreNaNimpl Operation<f32> for MinTakeNaNimpl Operation<f64> for MinTakeNaNimpl<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>