#![feature(test)]
extern crate test;
extern crate frunk;
use frunk::monoid::*;
use test::Bencher;
#[bench]
fn combine_all_i32(b: &mut Bencher) {
let v = vec![Some(1), Some(2), Some(3), Some(4), Some(5), Some(6), Some(7), Some(8), Some(9),
Some(10)];
b.iter(|| combine_all(&v))
}
#[bench]
fn std_add_all_i32(b: &mut Bencher) {
let v = vec![Some(1), Some(2), Some(3), Some(4), Some(5), Some(6), Some(7), Some(8), Some(9),
Some(10)];
b.iter(|| {
v.iter()
.fold(Some(0), |maybe_acc, maybe_n| {
maybe_acc.and_then(|acc| maybe_n.map(|n| acc + n))
})
})
}