| Crates.io | irange |
| lib.rs | irange |
| version | 1.1.2 |
| created_at | 2024-08-25 18:35:52.357912+00 |
| updated_at | 2024-09-05 20:43:22.223243+00 |
| description | A data structure to store and manipulate ranges of integers with set operations |
| homepage | |
| repository | https://github.com/alexvbrdn/irange |
| max_upload_size | |
| id | 1351354 |
| size | 50,838 |
A data structure to store and manipulate ranges of integers with set operations.
Supported types: u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128 and isize.
Add the following line in your Cargo.toml:
[dependencies]
irange = "1.1"
If you need serde support you can include the following feature flag:
[dependencies]
irange = { version = "1.1", features = ["serde"] }
use irange::RangeSet;
let range1 = RangeSet::<i64>::new_from_ranges(&[AnyRange::from(3..=4), AnyRange::from(7..9)]);
let range2 = RangeSet::<i64>::new_from_range(-2..=4);
let union = range1.union(&range2);
println!("{union}"); // [ -2..=4 7..=8 ]
for value in union.iter() {
print!("{value} "); // -2 -1 0 1 2 3 4 7 8
}
println!();
let intersection = range1.intersection(&range2);
println!("{intersection}"); // [ 3..=4 ]
for value in intersection.iter() {
print!("{value} "); // 3 4
}
println!();
let difference = range1.difference(&range2);
println!("{difference}"); // [ 7..=8 ]
for value in difference.iter() {
print!("{value} "); // 7 8
}
println!();
| Operation | Description | Time complexity | Space complexity |
|---|---|---|---|
union |
Compute the union with the given RangeSet. |
O(n) |
O(n) |
intersection |
Compute the intersection with the given RangeSet. |
O(n) |
O(n) |
difference |
Compute the difference with the given RangeSet. |
O(n) |
O(n) |
complement |
Compute the complement. | O(n) |
O(n) |
has_intersection |
Return true if there is a common value with the given RangeSet. |
O(n) |
O(1) |
contains |
Return true if it contains the given value. |
O(n) |
O(1) |
contains_all |
Return true if it contains the given RangeSet. |
O(n) |
O(1) |
is_total |
Return true if it contains all the possible values. |
O(1) |
O(1) |
is_empty |
Return true if it does not contain any value. |
O(1) |
O(1) |