range-regex 0.1.0

A library to generate regexes for ranges of numbers.
Documentation
#[inline(always)]
fn fill_by_nines(integer: i64, nines_count: usize) -> i64 {
    let offset = 10i64.pow(nines_count as u32);
    if integer % offset == 0 {
        offset - 1
    } else {
        let prefix = (integer / offset) * offset;
        let suffix = offset - 1;

        prefix + suffix
    }
}

pub(crate) struct FillByNinesIterator {
    min: i64,
    max: i64,
    stop: i64,
    nines_count: usize,
}

impl FillByNinesIterator {
    #[inline(always)]
    pub(crate) fn new(min: i64, max: i64) -> Self {
        let nines_count = 1;
        let stop = fill_by_nines(min, nines_count);
        Self { min, max, stop, nines_count }
    }
}

impl Iterator for FillByNinesIterator {
    type Item = i64;

    #[inline(always)]
    fn next(&mut self) -> Option<Self::Item> {
        if self.min <= self.stop && self.stop <= self.max {
            let stop = self.stop;
            self.nines_count += 1;
            self.stop = fill_by_nines(self.min, self.nines_count);

            Some(stop)
        } else {
            None
        }
    }
}