3 releases

0.1.3 Aug 25, 2023
0.1.1 Aug 19, 2023
0.1.0 Aug 19, 2023

#453 in Algorithms

Download history 1708/week @ 2024-01-05 2501/week @ 2024-01-12 2702/week @ 2024-01-19 2292/week @ 2024-01-26 2155/week @ 2024-02-02 413/week @ 2024-02-09 1564/week @ 2024-02-16 2741/week @ 2024-02-23 2571/week @ 2024-03-01 1864/week @ 2024-03-08 2948/week @ 2024-03-15 2862/week @ 2024-03-22 2394/week @ 2024-03-29 1934/week @ 2024-04-05 1579/week @ 2024-04-12 1753/week @ 2024-04-19

8,203 downloads per month

MIT/Apache

31KB
546 lines

stream-more

More utils to operate Stream in rust

StreamMore

StreamMore extends the functionality of Streams, providing additional methods for merging and sorting.

Features

  • kmerge_by: creates a k-way merge Stream by merging the given Streams according to a provided closure function.

  • kmerge_max: merges Streams by choosing the "greatest" item.

  • kmerge_min: merges Streams by choosing the "smallest" item.

Examples

Here are some examples of how to use the functions provided by StreamMore.

Merge streams in customized order:

use futures::StreamExt;
use futures::executor::block_on;
use futures::stream::iter;
use stream_more::StreamMore;

let x = iter([1, 3]);
let y = iter([2, 4]);

let m = x.kmerge_by(|a,b| a < b)
         .merge(y);

let got = block_on(m.collect::<Vec<u64>>());
assert_eq!(vec![1, 2, 3, 4], got);

Merge and choose smallest item:

let x = iter([3, 2]);
let y = iter([4, 1]);
let z = iter([5]);

let m = x.kmerge_min()
         .merge(y)
         .merge(z);

let got = block_on(m.collect::<Vec<u64>>());
assert_eq!(vec![1, 2, 3, 4, 5], got);

Dependencies

~1MB
~17K SLoC