use beetle_nonzero::NonZeroUnchecked;
use crate::Collatz;
pub fn alpha<T: Collatz>(
start: NonZeroUnchecked<T>,
stop: NonZeroUnchecked<T>,
) -> impl Iterator<Item = u32> {
let [start, stop] = [start.value, stop.value];
num::iter::range(start, stop).map(|x| crate::steps::alpha(NonZeroUnchecked::new(x)))
}
pub fn omega<T: Collatz>(
start: NonZeroUnchecked<T>,
stop: NonZeroUnchecked<T>,
) -> impl Iterator<Item = Option<u32>> {
let (start, stop) = (start.value, stop.value);
num::iter::range(start, stop).map(|x| crate::steps::omega(NonZeroUnchecked::new(x)))
}