simple_ringbuf 0.1.2

Simple Ringbuf is a speedy lightweight fixed-size infinite-use collection optimized for straightforward single threaded use.
Documentation
use simple_ringbuf::RingBuffer;

pub fn setup_full_buffer(size: usize) -> RingBuffer<usize> {
    let mut buf = RingBuffer::new(size);
    for i in 1..=size {
        buf.push(i);
    }

    buf
}

pub fn setup_rotated_full_buffer(size: usize, rotation: usize) -> RingBuffer<usize> {
    let mut buf = setup_full_buffer(size);

    for i in 1..rotation {
        buf.push(i * 10);
    }

    buf
}

pub fn setup_left_empty_buffer(size: usize, gap: usize) -> RingBuffer<usize> {
    let mut buf = setup_full_buffer(size);

    for _ in 0..gap {
        buf.pop_oldest();
    }

    buf
}

pub fn setup_right_empty_buffer(size: usize, gap: usize) -> RingBuffer<usize> {
    let mut buf = RingBuffer::new(size);

    for i in 1..=(size - gap) {
        buf.push(i);
    }

    buf
}

pub fn setup_island_buffer(size: usize, left_gap: usize, right_gap: usize) -> RingBuffer<usize> {
    let mut buf = setup_full_buffer(size);

    for _ in 0..left_gap {
        buf.pop_oldest();
    }

    for _ in 0..right_gap {
        buf.pop();
    }

    buf
}

pub fn setup_rotated_island_buffer(
    size: usize,
    rotation: usize,
    left_shrink: usize,
    right_shrink: usize,
) -> RingBuffer<usize> {
    let mut buf = setup_rotated_full_buffer(size, rotation);

    for _ in 0..left_shrink {
        buf.pop_oldest();
    }

    for _ in 0..right_shrink {
        buf.pop();
    }

    buf
}