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}