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 日 |
#2161 在 Rust 模式
145 每月下载
在 8 个 crate 中使用 (7 直接)
15KB
51 行
此 crate 定义了 Duplex 特质,用于具有逻辑上独立输入和输出通道的类型。
Read 和 Write 特质通过 &mut self 获取其流并阻塞,因此不能同时在同一流上使用。此 crate 为任何实现 Duplex、Read 和 Write 的类型提供并实现了 HalfDuplex 特质。
AsyncRead 和 AsyncWrite 特质通过 &mut self 获取其流但不阻塞,因此可以在同一流上同时使用,至少当它们连接到支持此功能的端点时。当启用 "futures-io" 功能时,此 crate 为任何实现 Duplex、AsyncRead 和 AsyncWrite 的类型提供并实现了 FullDuplex 特质。
Tokio 使用它自己的 AsyncRead 和 AsyncWrite。当启用 "tokio" 功能时,此包还提供了并实现了 TokioFullDuplex,适用于任何实现了 Duplex、tokio::io::AsyncRead 和 tokio::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