nonempty_range 0.1.0

A simple Range representing nonempty ranges.
Documentation
use std::ops::Range;

#[derive(Clone, Hash, Eq, PartialEq)]
pub struct NonemptyRange {
  pub start: usize,
  pub size_minus_one: usize,
}

impl IntoIterator for NonemptyRange {
  type Item = usize;
  type IntoIter = Range<usize>;
  fn into_iter(self) -> Self::IntoIter {
    self.start..self.size_minus_one + self.start + 1
  }
}

#[test]
fn test_nonempty_range_into_iterator() {
  assert!(
    NonemptyRange {
      start: 5,
      size_minus_one: 2
    }
    .into_iter()
    .eq([5, 6, 7].into_iter().cloned())
  )
}