alternating_iter/
utils.rs

1pub(crate) fn min_and_1(i: usize, j: usize, last_i: bool) -> (usize, bool) {
2    use core::cmp::Ordering;
3
4    match i.cmp(&j) {
5        Ordering::Less => (i, last_i),
6        Ordering::Equal => (i, false),
7        Ordering::Greater => (j, !last_i),
8    }
9}
10pub(crate) fn saturating((min, add_one): (usize, bool)) -> usize {
11    min.saturating_mul(2).saturating_add(add_one as usize)
12}
13pub(crate) fn checked((min, add_one): (usize, bool)) -> Option<usize> {
14    min.checked_mul(2)
15        .and_then(|min| min.checked_add(add_one as usize))
16}