shiftnanigans 0.3.5

This library contains different iteration data structures for either iterating or for shifting iteratively forward and backward.
Documentation
use std::rc::Rc;
use shiftnanigans::shifter::{segment_permutation_shifter::{SegmentPermutationShifter, Segment}, Shifter};
use criterion::{black_box, criterion_group, Criterion};

fn single_shifter(bounding_length: usize) {
    let mut shifter = SegmentPermutationShifter::new(
        vec![
            Rc::new(Segment::new(1))
        ],
        (10, 100),
        bounding_length,
        true,
        1,
        false
    );
    shifter.randomize();
    shifter.try_forward();
    for _ in 0..bounding_length {
        shifter.try_increment();
    }
}

fn criterion_benchmark(c: &mut Criterion) {
    c.bench_function("single_shifter: 41", |b| b.iter(|| single_shifter(black_box(41))));
}

criterion_group!(benches, criterion_benchmark);