ranges-ext-0.1.0 has been yanked.
ranges-ext
ranges-ext is a range/interval set data structure designed for no_std + alloc environments.
- Uses half-open range semantics:
[start, end)(i.e.start..end) - Merges overlapping or adjacent ranges on insertion
- Checks whether a value is contained in any range
- Removes a range by subtracting the intersection; can split an existing range into two
Installation
[]
= "0.1"
This crate is #![no_std] by default and depends on alloc.
Usage
use Range;
use RangeSet;
let mut set = new;
// Add ranges (automatically normalized/merged)
set.add_range;
set.add_range;
set.add_range;
assert_eq!;
// Query
assert!;
assert!;
// Remove intersection (may split)
set.clear;
set.add_range;
set.remove_range;
assert_eq!;
API (brief)
RangeSet<T>::add_range(range): insert and merge (empty ranges wherestart >= endare ignored)RangeSet<T>::contains(value): containment testRangeSet<T>::remove_range(range): subtract intersection; may splitRangeSet<T>::as_slice(): view normalized ranges (sorted, non-overlapping)
License
Licensed under either MIT or Apache-2.0, at your option.