haar_lib/algebra/
list.rs

1//! `Vec`結合のモノイド
2use std::marker::PhantomData;
3
4pub use crate::algebra::traits::*;
5use crate::impl_algebra;
6
7/// `Vec`の結合演算のモノイド
8#[derive(Clone, Copy, Default, Debug, Hash, PartialEq, Eq)]
9pub struct ConcatList<T>(PhantomData<T>);
10impl<T> ConcatList<T> {
11    /// `ConcatList`を返す。
12    pub fn new() -> Self {
13        Self(PhantomData)
14    }
15}
16
17impl_algebra!(
18    {T} ConcatList<T>;
19    set: Vec<T>;
20    id: |_| vec![];
21    op: |_, mut a: Vec<T>, mut b: Vec<T>| {a.append(&mut b); a};
22    assoc;
23);