Skip to main content

Crate subms_merge_iterator

Crate subms_merge_iterator 

Source
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<_>>());

Structsยง

MergeIterator