3 个版本
0.1.3 | 2023年8月25日 |
---|---|
0.1.1 | 2023年8月19日 |
0.1.0 | 2023年8月19日 |
#666 在 算法
每月8,401 次下载
31KB
546 行
stream-more
更多用于在 Rust 中操作 Stream 的工具
StreamMore
StreamMore
扩展了 Stream 的功能,提供了合并和排序的额外方法。
特性
-
kmerge_by: 通过提供的一个闭包函数,根据给定的流合并创建一个 k-路合并 Stream。
-
kmerge_max: 通过选择“最大”的项目合并 Stream。
-
kmerge_min: 通过选择“最小”的项目合并 Stream。
示例
以下是如何使用 StreamMore 提供的函数的示例。
按自定义顺序合并流:
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);
合并并选择最小项:
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);
依赖
~1MB
~17K SLoC