rangetools 0.1.4

Extending the Rust Range structs found in std::ops
Documentation
use crate::{BoundedSet, LowerBoundedSet, Rangetools};

#[test]
fn next() {
    let s1: LowerBoundedSet<i32> = (4..).union(BoundedSet::empty());
    let mut i1 = s1.into_iter();
    assert_eq!(i1.next(), Some(4));
    assert_eq!(i1.next(), Some(5));

    let s2: LowerBoundedSet<i32> = (1..2).union(4..);
    let mut i2 = s2.into_iter();
    assert_eq!(i2.next(), Some(1));
    assert_eq!(i2.next(), Some(4));
}

#[test]
fn size_hint() {
    let hint = (usize::MAX, None);
    let s1: LowerBoundedSet<i32> = (4..).union(BoundedSet::empty());
    assert_eq!(s1.into_iter().size_hint(), hint);

    let s2: LowerBoundedSet<i32> = (1..2).union(4..);
    assert_eq!(s2.into_iter().size_hint(), hint);
}

#[test]
fn nth() {
    let s1: LowerBoundedSet<i32> = (4..).union(BoundedSet::empty());
    let mut i1 = s1.into_iter();
    assert_eq!(i1.nth(1), Some(5));
    assert_eq!(i1.nth(2), Some(8));

    let s2: LowerBoundedSet<i32> = (1..2).union(4..);
    let mut i2 = s2.into_iter();
    assert_eq!(i2.nth(1), Some(4));
    assert_eq!(i2.nth(2), Some(7));
}

#[test]
fn min() {
    let s1: LowerBoundedSet<i32> = (4..).union(BoundedSet::empty());
    assert_eq!(s1.into_iter().min(), Some(4));

    let s2: LowerBoundedSet<i32> = (1..2).union(4..);
    assert_eq!(s2.into_iter().min(), Some(1));
}