haar_lib/algebra/
min_max.rs1pub use crate::algebra::traits::*;
3use crate::impl_algebra;
4
5#[derive(Clone, Copy, Default, Debug, PartialEq, Eq)]
7pub struct Min<T>(pub T);
8
9#[derive(Clone, Copy, Default, Debug, PartialEq, Eq)]
11pub struct Max<T>(pub T);
12
13macro_rules! implement {
14 ($($t:tt),*) => {
15 $(impl_algebra!(Min<$t>; op: |a: Self, b: Self| Self(a.0.min(b.0)); id: Self($t::MAX); commu; assoc; idem;);)*
16 $(impl_algebra!(Max<$t>; op: |a: Self, b: Self| Self(a.0.max(b.0)); id: Self($t::MIN); commu; assoc; idem;);)*
17 };
18}
19
20implement!(i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize);