Crates.io | stream-more |
lib.rs | stream-more |
version | 0.1.3 |
source | src |
created_at | 2023-08-19 01:50:50.775178 |
updated_at | 2023-08-25 10:00:40.186945 |
description | Stream utilities for Rust |
homepage | https://github.com/drmingdrmer/stream-more |
repository | https://github.com/drmingdrmer/stream-more |
max_upload_size | |
id | 948449 |
size | 30,618 |
More utils to operate Stream in rust
StreamMore
extends the functionality of Streams, providing additional methods for merging and sorting.
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.
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);