Crate rangetools

Source
Expand description

Extra methods for the standard library Range types:

To extend these types with the methods in this crate, import the Rangetools trait:

use rangetools::Rangetools;

This provides new methods on all of the above types, as well as any types introduced in this crate to manage the outputs of such methods.

use rangetools::Rangetools;

let i = (0..5).intersection(3..);
assert!(i.contains(4));

let i2 = (0..5).intersection(5..10);
assert!(i2.is_empty());

Wherever possible (when the result is lower-bounded), the resulting types of these operations implement IntoIterator so that more operations can be performed on them.

use rangetools::Rangetools;

let u1 = (1..3).union(5..7);
assert_eq!(u1.into_iter().collect::<Vec<_>>(), vec![1, 2, 5, 6]);

let u2 = (1..3).union(10..);
assert_eq!(u2.into_iter().take(5).collect::<Vec<_>>(), vec![1, 2, 10, 11, 12]);
let c = (1..3).complement();
let i = c.into_iter(); // Compiler error! The result has no lower bound
                       // and thus cannot be iterated over.

§Crate features

serde - When enabled, derives [serde]’s Serialize and Deserialize traits for all of the types introduced in this crate.

Structs§

BoundedRange
A range bounded both below and above (either inclusive or exclusive).
BoundedRangeIter
An iterator over the values contained by a BoundedRange.
BoundedSet
A set of ranges ultimately bounded both below and above.
BoundedSetIter
An iterator over the values contained by a BoundedSet.
EmptyRange
A range with no elements.
LowerBound
Lower bound of a range.
LowerBoundedRange
A range only bounded below (either inclusive or exclusive).
LowerBoundedRangeIter
An iterator over the values contained by a LowerBoundedRange.
LowerBoundedSet
A set of ranges with a finite lower bound but no upper bound.
LowerBoundedSetIter
An iterator over the values contained by a LowerBoundedSet.
PiecewiseUnboundedSet
A set of ranges with ultimately no upper or lower bound.
UnboundedRange
A range with no upper or lower bound.
UpperBound
Upper bound of a range.
UpperBoundedRange
A range only bounded above (either inclusive or exclusive).
UpperBoundedSet
A set of ranges with a finite upper bound but no lower bound.

Enums§

Bound
Endpoints of a closed range.
UnboundedSet
A set of ranges ultimately with no upper or lower bound.

Traits§

RangeComplement
Helper trait for performing range complement.
RangeIntersection
Helper trait for performing range intersection.
RangeUnion
Helper trait for performing range unions.
Rangetools
Extends the standard library Range types with extra functionality.
Step
Types are required to implement this trait for ranges of that type to be iterated through.