1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use std::ops::{Add, Mul};
use crate::prelude::*;
impl<A> Foldable<A> for Vec<A> {
fn foldr<F, B>(self, folder: F, init: B) -> B
where
F: Fn(B, A) -> B,
{
self.into_iter().fold(init, folder)
}
}
impl<M: Monoid> FoldableExtMonoid<M> for Vec<M> {}
impl<A: PartialEq> FoldableExtEq<A> for Vec<A> {}
impl<A: PartialOrd> FoldableExtOrd<A> for Vec<A> {}
impl<A: Add<Output = A> + Monoid> FoldableExtSum<A> for Vec<A> {}
impl<A: Mul<Output = A> + Monoid> FoldableExtProd<A> for Vec<A> {}