10 个稳定版本
2.2.0 | 2024年1月16日 |
---|---|
2.1.0 | 2023年7月17日 |
1.5.0 | 2023年6月6日 |
1.4.0 | 2020年11月15日 |
0.1.1 | 2020年2月5日 |
#154 在 命令行界面 中
每月 126 次下载
用于 2 crates
25KB
351 代码行
io-mux
一个 Mux 提供一个接收端和多个发送端。发送到任何发送端的数据按顺序从接收端输出,并标记发送者。
每个发送端作为一个文件描述符工作。例如,使用 io-mux
,您可以收集进程的 stdout 和 stderr,并突出显示 stderr 中的任何错误输出,同时保持 stdout 和 stderr 中的数据相对顺序。
注意,读取不提供“EOF”指示;如果没有进一步的数据到达,它将永久阻塞。避免在数据源退出后读取。
异步
如果您启用了 async
功能,io-mux
还提供 AsyncMux
类型,允许异步处理数据。
您可能希望与 async-process 或 async-pidfd 一起使用,以并发等待进程的退出和该进程的复用输出和错误。在进程退出之前,调用 AsyncMux::read()
获取下一个输出块,同时与进程的退出并发等待。一旦进程退出并且因此不会产生更多输出,调用 AsyncMux::read_nonblock
直到它返回 None
以清空 Mux 的剩余输出。
可移植性
io-mux
使用 UNIX 套接字,因此它只能在 UNIX 平台上运行。对非 Linux 平台的支持是实验性的,并且在语义上有重大缺陷;请参阅 文档 了解更多详情。
依赖项
~1.6–10MB
~105K SLoC