haar_lib/algebra/
chmin_min.rs

1//! Range Chmin Range Min
2use std::marker::PhantomData;
3
4pub use crate::algebra::{action::*, min_max::Min};
5
6/// Range Chmin Range Min用の代数的構造
7#[derive(Copy, Clone, Default, Debug, PartialEq, Eq)]
8pub struct ChminMin<T>(PhantomData<T>);
9
10impl<T> Action for ChminMin<T>
11where
12    Min<T>: Monoid,
13    T: Ord,
14{
15    type Output = Min<T>;
16    type Lazy = Min<T>;
17
18    fn convert(value: Self::Output, lazy: Self::Lazy, _: usize) -> Self::Output {
19        Min(value.0.min(lazy.0))
20    }
21}