iter-set-ops
Fast set operations on an arbitrary number of sorted deduplicated iterators.
Features
- set operations for an arbitrary number of sets
- zero copy: each item is reused from its iterator, no copy is made
- custom comparison operator with
merge_iters_by
/intersect_iters_by
- lazy intersection: the computation stops as soon as one of the sets is exhausted
Example usage
use intersect_iters;
let it1 = 1u8..=5;
let it2 = 3u8..=7;
let it3 = 2u8..=4;
let mut iters = ;
// intersect it1, it2 and it3
let res: = intersect_iters.collect;
assert_eq!;
// the computation stops before exhausting all the iterators
assert!;
use merge_iters_by;
let it1 = .rev;
let it2 = .rev;
let it3 = .rev;
let mut iters = ;
// merge it1, it2 and it3 using a reverse comparison operator
let res: = merge_iters_by.collect;
assert_eq!;
use merge_iters_detailed;
let it1 = 1u8..=2;
let it2 = 2u8..=3;
let mut iters = ;
// merge it1 and it2 while keeping the details of each item
let res: = merge_iters_detailed.collect;
assert_eq!;