16个版本
0.1.15 | 2024年3月14日 |
---|---|
0.1.14 | 2023年4月26日 |
0.1.12 | 2023年2月20日 |
0.1.11 | 2022年10月11日 |
0.1.0 | 2020年12月23日 |
#4 在 #io-stream
4,701,418 每月下载量
在 6,278 个crate中使用 (直接使用 1,379)
2.5MB
39K SLoC
tokio-stream
用于操作 Stream
和 tokio
的实用工具。
许可证
此项目使用 MIT许可证 许可。
贡献
除非您明确说明,否则您提交给Tokio的任何贡献都应被视为MIT许可,没有任何额外的条款或条件。
lib.rs
:
为Tokio提供的Stream实用工具。
Stream
是一个异步值序列。它可以被认为是标准库中 Iterator
特性的异步版本。
此crate提供了一些与它们一起工作的辅助工具。有关用法示例和更深入的流描述,您还可以参考tokio网站上的 流教程。
遍历Stream
由于与标准库中的 Iterator
特性相似,一些新用户可能假设他们可以使用 for in
语法遍历 Stream
,但遗憾的是这并不可能。相反,您可以使用以下 while let
循环
use tokio_stream::{self as stream, StreamExt};
#[tokio::main]
async fn main() {
let mut stream = stream::iter(vec![0, 1, 2]);
while let Some(value) = stream.next().await {
println!("Got {}", value);
}
}
从函数返回Stream
从函数中流式传输值的一种常见方法是传递通道的发送半部分并使用接收器作为流。这需要等待两个future以确保进展。另一种替代方法是 async-stream crate,它包含宏,提供了 yield
关键字,并允许您返回一个 impl Stream
。
转换为和从 AsyncRead
/AsyncWrite
通常希望将 Stream
转换为 AsyncRead
,尤其是在处理通过网络传输的纯文本格式时。从 AsyncRead
转换为 Stream
的操作也是另一个常见需求。为了实现这些转换,当启用 io 功能时,tokio-util
提供了 StreamReader
和 ReaderStream
类型。
依赖关系
~0–7.5MB
~48K SLoC