tool 0.2.1

A grab-bag of tools for functional programming.
Documentation
#![feature(test)]
extern crate test;
extern crate tool;

use tool::sequence::*;

#[bench]
fn bench_first_slice(b: &mut test::Bencher) {
    let v = vec![1,2,3,4,5,6,7,8,9,10];
    b.iter(|| {
        test::black_box(first(test::black_box(&*v)))
    })
}

#[bench]
fn bench_third_slice(b: &mut test::Bencher) {
    let v = vec![1,2,3,4,5,6,7,8,9,10];
    b.iter(|| {
        test::black_box(third(test::black_box(&*v)).unwrap())
    })
}

#[bench]
fn bench_first_tuple(b: &mut test::Bencher) {
    let v = ("a", "b", "c", "d");
    b.iter(|| {
        test::black_box(first(test::black_box(v)))
    })
}

#[bench]
fn bench_third_tuple(b: &mut test::Bencher) {
    let v = ("a", "b", "c", "d");
    b.iter(|| {
        test::black_box(third(test::black_box(v)))
    })
}


#[bench]
fn bench_first_array_long(b: &mut test::Bencher) {
    let v = [0i32; 10];
    b.iter(|| {
        test::black_box(first(test::black_box(v)))
    })
}

#[bench]
fn bench_first_array_short(b: &mut test::Bencher) {
    let v = [0i32; 1];
    b.iter(|| {
        test::black_box(first(test::black_box(v)))
    })
}