1
2
3
4
5
6
7
8
9
10
11
12
13
14
use crate::prelude::*;

impl<A> Foldable<A> for Option<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 Option<M> {}
impl<A: PartialEq> FoldableExtEq<A> for Option<A> {}
impl<A: PartialOrd> FoldableExtOrd<A> for Option<A> {}