chore(rangeset): add convenience traits and prepare 0.4 release (#80)

This commit is contained in:
sinu.eth
2025-12-08 07:46:58 -08:00
committed by GitHub
parent d075df8d87
commit 0b2ee24e0c
2 changed files with 26 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "rangeset"
version = "0.3.0"
version = "0.4.0"
edition = "2024"
authors = ["TLSNotary Contributors"]
license = "MIT OR Apache-2.0"

View File

@@ -24,21 +24,25 @@
//! set::RangeSet,
//! };
//!
//! // Create a set from an iterator of unsanitized ranges.
//! let set = RangeSet::from_iter([0..1, 4..5, 3..4, 0..0, 2..1].into_iter());
//! assert_eq!(set, RangeSet::from([0..1, 3..5]));
//!
//! let a = 10..20;
//!
//! // Difference
//! let diff: RangeSet<_> = a.difference(15..25).collect();
//! assert_eq!(diff, RangeSet::from([10..15]));
//! assert_eq!(diff, RangeSet::from(10..15));
//!
//! let diff: RangeSet<_> = a.difference(12..15).collect();
//! assert_eq!(diff, RangeSet::from([10..12, 15..20]));
//!
//! // Union
//! let union: RangeSet<_> = a.union(15..25).collect();
//! assert_eq!(union, RangeSet::from([10..25]));
//! assert_eq!(union, RangeSet::from(10..25));
//!
//! let union: RangeSet<_> = a.union(0..0).collect();
//! assert_eq!(union, RangeSet::from([10..20]));
//! assert_eq!(union, RangeSet::from(10..20));
//!
//! // Comparison
//! assert!(a.is_subset(0..30));
@@ -346,6 +350,24 @@ impl<T> FromRangeIterator<T> for RangeSet<T> {
}
}
impl<T> IntoIterator for RangeSet<T> {
type Item = Range<T>;
type IntoIter = std::vec::IntoIter<Range<T>>;
fn into_iter(self) -> Self::IntoIter {
self.ranges.into_iter()
}
}
impl<'a, T: Copy> IntoIterator for &'a RangeSet<T> {
type Item = Range<T>;
type IntoIter = RangeIter<'a, T>;
fn into_iter(self) -> Self::IntoIter {
self.iter()
}
}
impl<T: Copy + Ord> IntoRangeIterator<T> for RangeSet<T> {
type IntoIter = IntoRangeIter<T>;