mirror of
https://github.com/tlsnotary/tlsn-utils.git
synced 2026-01-08 04:13:59 -05:00
chore(rangeset): add convenience traits and prepare 0.4 release (#80)
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rangeset"
|
name = "rangeset"
|
||||||
version = "0.3.0"
|
version = "0.4.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
authors = ["TLSNotary Contributors"]
|
authors = ["TLSNotary Contributors"]
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
|
|||||||
@@ -24,21 +24,25 @@
|
|||||||
//! set::RangeSet,
|
//! 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;
|
//! let a = 10..20;
|
||||||
//!
|
//!
|
||||||
//! // Difference
|
//! // Difference
|
||||||
//! let diff: RangeSet<_> = a.difference(15..25).collect();
|
//! 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();
|
//! let diff: RangeSet<_> = a.difference(12..15).collect();
|
||||||
//! assert_eq!(diff, RangeSet::from([10..12, 15..20]));
|
//! assert_eq!(diff, RangeSet::from([10..12, 15..20]));
|
||||||
//!
|
//!
|
||||||
//! // Union
|
//! // Union
|
||||||
//! let union: RangeSet<_> = a.union(15..25).collect();
|
//! 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();
|
//! let union: RangeSet<_> = a.union(0..0).collect();
|
||||||
//! assert_eq!(union, RangeSet::from([10..20]));
|
//! assert_eq!(union, RangeSet::from(10..20));
|
||||||
//!
|
//!
|
||||||
//! // Comparison
|
//! // Comparison
|
||||||
//! assert!(a.is_subset(0..30));
|
//! 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> {
|
impl<T: Copy + Ord> IntoRangeIterator<T> for RangeSet<T> {
|
||||||
type IntoIter = IntoRangeIter<T>;
|
type IntoIter = IntoRangeIter<T>;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user