1
2
3
4
5
6
7
8
9
10
11
12
13
14
//! 区間和に関するトレイトです。

use super::binop;

use std::ops::RangeBounds;

use binop::{Magma, Monoid};

/// 区間和を求める。
pub trait Fold<R: RangeBounds<usize>> {
    type Output: Monoid;
    /// `r` で指定される区間の和を返す。
    fn fold(&self, r: R) -> <Self::Output as Magma>::Set;
}