16 个重大版本发布

0.16.0 2023 年 3 月 3 日
0.15.0 2022 年 11 月 27 日
0.14.0 2022 年 11 月 8 日
0.13.0 2022 年 6 月 16 日
0.3.1 2021 年 3 月 4 日

#2161Rust 模式

Download history 62/week @ 2024-03-11 34/week @ 2024-03-18 98/week @ 2024-03-25 87/week @ 2024-04-01 33/week @ 2024-04-08 21/week @ 2024-04-15 47/week @ 2024-04-22 46/week @ 2024-04-29 42/week @ 2024-05-06 25/week @ 2024-05-13 32/week @ 2024-05-20 32/week @ 2024-05-27 38/week @ 2024-06-03 23/week @ 2024-06-10 38/week @ 2024-06-17 43/week @ 2024-06-24

145 每月下载
8 个 crate 中使用 (7 直接)

Apache-2.0…

15KB
51

双工

双工特质:交互式流

Github Actions CI Status crates.io page docs.rs docs

此 crate 定义了 Duplex 特质,用于具有逻辑上独立输入和输出通道的类型。

ReadWrite 特质通过 &mut self 获取其流并阻塞,因此不能同时在同一流上使用。此 crate 为任何实现 DuplexReadWrite 的类型提供并实现了 HalfDuplex 特质。

AsyncReadAsyncWrite 特质通过 &mut self 获取其流但不阻塞,因此可以在同一流上同时使用,至少当它们连接到支持此功能的端点时。当启用 "futures-io" 功能时,此 crate 为任何实现 DuplexAsyncReadAsyncWrite 的类型提供并实现了 FullDuplex 特质。

Tokio 使用它自己的 AsyncReadAsyncWrite。当启用 "tokio" 功能时,此包还提供了并实现了 TokioFullDuplex,适用于任何实现了 Duplextokio::io::AsyncReadtokio::io::AsyncWrite 的类型。

常规的 File 不是双向设备,因为尽管它们支持输入和输出,但由于它们在操作系统中共享一个当前位置指针,输入和输出在逻辑上并不是独立的。字符设备通常在操作系统API中与文件统一,但它们可能表示双向设备。因此,尽管 File 没有实现 Duplex,但 CharDevice 却实现了。

以下是实现 Duplex 的一些显著类型

类型 cfg 注释
std::net::TcpStream
io_streams::StreamDuplexer
nameless::DuplexByteStream
nameless::DuplexTextStream
char_device::CharDevice feature= char-device
socketpair::SocketpairStream feature=socketpair
ssh2::Stream feature=ssh2
ssh2::Channel feature=ssh2
serialport::TTYPort all(unix,feature=serialport) serialport 依赖关系
readwrite::ReadWrite feature=readwrite
duplexify::Duplexify feature=duplexify
socket2::Socket feature=socket2

在 char-device 和 socketpair 中对 async-std 和 tokio 的支持暂时禁用,直到那些 crate 包含了所需的 I/O 安全特质的实现。

依赖关系

~0–12MB
~137K SLoC