Expand description
K-way merge iterator. Min-heap of stream heads; pop the minimum, advance that stream, push its next value if any.
Streams must be sorted ascending. Output is the global sorted union.
use subms_merge_iterator::MergeIterator;
let streams: Vec<Box<dyn Iterator<Item = i32>>> = vec![
Box::new(vec![1, 4, 7].into_iter()),
Box::new(vec![2, 5, 8].into_iter()),
Box::new(vec![3, 6, 9].into_iter()),
];
let merged: Vec<_> = MergeIterator::new(streams).collect();
assert_eq!(merged, (1..=9).collect::<Vec<_>>());