diff --git a/src/rangemap.rs b/src/rangemap.rs index 91eef9a8774e8ed5e2b244ead2e6959bf63552b9..8c587167f7f86e5cd9b873a515fdfa449f8a3c46 100644 --- a/src/rangemap.rs +++ b/src/rangemap.rs @@ -84,6 +84,23 @@ impl<RK: Ord + Copy, V> RangeMap<RK, V> { None } + + /// Returns all stored ranges, sorted by key. + pub fn iter(&self) -> impl Iterator<Item = ((RK, RK), &V)> + '_ { + self.ranges + .iter() + .map(|(&s, value)| ((s, value.0), &value.1)) + } + + /// Returns the number of elements in the map. + pub fn len(&self) -> usize { + self.ranges.len() + } + + /// Returns whether this map is empty. + pub fn is_empty(&self) -> bool { + self.ranges.is_empty() + } } impl<RK: Ord + Copy, V> Default for RangeMap<RK, V> { diff --git a/src/rangeset.rs b/src/rangeset.rs index 49de772cd2cba2fd025f05ee2d767584c1cc1624..f6e52d82077123dcb7c662685c02f7ad9d1a817a 100644 --- a/src/rangeset.rs +++ b/src/rangeset.rs @@ -69,7 +69,7 @@ impl<RK: Ord + Copy> RangeSet<RK> { false } - /// Returns all stored ranges. + /// Returns all stored ranges, sorted by key. pub fn iter(&self) -> impl Iterator<Item = (RK, RK)> + '_ { self.ranges.iter().map(|(&s, &e)| (s, e)) }