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