basebits 1.2.0

A library for encoding DNA into u64 to allow for constant time hamming distance calculations.
Documentation
#[macro_use]
extern crate criterion;

use criterion::black_box;
use criterion::Criterion;

extern crate basebits;
use basebits::*;

fn criterion_benchmark(c: &mut Criterion) {
    c.bench_function("ham distance classical on strings", |b| {
        b.iter(|| hamming::hamming_str(black_box("ACTGACTGACTG"), black_box("ACTGGGGGACTG")))
    });
    let a = BaseBits::new(b"ACTGACTGACTG").unwrap();
    let be = BaseBits::new(b"ACTGGGGGACTG").unwrap();
    c.bench_function("BaseBits pre encoded input, n-any", move |b| {
        b.iter(|| hamming_dist_nany(&a, &be))
    });

    c.bench_function("BaseBits pre encoded input, n-one", move |b| {
        b.iter(|| hamming_dist_none(&a, &be))
    });

    c.bench_function("BaseBits with encoding: n-one", |b| {
        b.iter(|| {
            hamming_dist_none(
                &BaseBits::new(b"ACTGACTGACTG").unwrap(),
                &BaseBits::new(b"ACTGGGGGACTG").unwrap(),
            )
        })
    });
    c.bench_function("BaseBits with encoding: n-any", |b| {
        b.iter(|| {
            hamming_dist_nany(
                &BaseBits::new(b"ACTGACTGACTG").unwrap(),
                &BaseBits::new(b"ACTGGGGGACTG").unwrap(),
            )
        })
    });
    c.bench_function("BaseBits encoding cost", |b| {
        b.iter(|| black_box(BaseBits::new(b"ACTGACTGACTG").unwrap()))
    });
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);