merging-iterator

Crates.iomerging-iterator
lib.rsmerging-iterator
version1.3.0
sourcesrc
created_at2018-10-14 10:47:00.430987
updated_at2020-11-18 16:16:28.072904
descriptionAn iterator to return the elements of two independently ordered iterators in order
homepage
repositoryhttps://github.com/vbrandl/merging-iterator
max_upload_size
id90081
size24,631
owners (github:sagan-software:owners)

documentation

https://docs.rs/merging-iterator/

README

Merging Iterator

Rust Crates.io docs.rs License License

This crate implements an iterator, that takes two independent iterators and returns their elements in order, given the two input iterators are sorted itself.

Important note: This iterator only works if the input iterators are already sorted since only the respective next elements of each iterator are compared. There are no checks in place to validate this property.

Example

extern crate merging_iterator;

use merging_iterator::MergeIter;
let a = vec![0, 2, 4, 6, 8];
let b = vec![1, 3, 5, 7, 9];
let merger = MergeIter::new(a, b);
assert_eq!(
    vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    merger.collect::<Vec<_>>()
);

You can also merge more than two sorted iterators like this:

extern crate merging_iterator;

use merging_iterator::MergeIter;
let a = vec![1, 4, 7];
let b = vec![2, 5, 8];
let c = vec![3, 6, 9];
let merger = MergeIter::new(
    MergeIter::new(a, b),
    c
);
assert_eq!(
    vec![1, 2, 3, 4, 5, 6, 7, 8, 9],
    merger.collect::<Vec<_>>()
);

License

merging-iterator is licensed under either of the following, at your option:

Commit count: 33

cargo fmt