3 个版本

0.1.3 2023年8月25日
0.1.1 2023年8月19日
0.1.0 2023年8月19日

#666算法

Download history • Rust 包仓库 2858/week @ 2024-03-14 • Rust 包仓库 2854/week @ 2024-03-21 • Rust 包仓库 2812/week @ 2024-03-28 • Rust 包仓库 1595/week @ 2024-04-04 • Rust 包仓库 1837/week @ 2024-04-11 • Rust 包仓库 1965/week @ 2024-04-18 • Rust 包仓库 1983/week @ 2024-04-25 • Rust 包仓库 1506/week @ 2024-05-02 • Rust 包仓库 3369/week @ 2024-05-09 • Rust 包仓库 2431/week @ 2024-05-16 • Rust 包仓库 2100/week @ 2024-05-23 • Rust 包仓库 2201/week @ 2024-05-30 • Rust 包仓库 2020/week @ 2024-06-06 • Rust 包仓库 1479/week @ 2024-06-13 • Rust 包仓库 2357/week @ 2024-06-20 • Rust 包仓库 2051/week @ 2024-06-27 • Rust 包仓库

每月8,401 次下载

MIT/Apache

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