1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//! 区間作用に関するトレイトです。

use super::action;
use super::binop;

use std::ops::RangeBounds;

use action::MonoidAction;
use binop::Magma;

/// 区間作用を行う。
pub trait Act<R: RangeBounds<usize>> {
    /// `r` で指定される区間に作用を行う。
    type Action: MonoidAction;
    fn act(
        &mut self,
        r: R,
        x: <<Self::Action as MonoidAction>::Operator as Magma>::Set,
    );
}