8 个版本 (稳定)
1.2.4 | 2023 年 12 月 2 日 |
---|---|
1.2.3 |
|
1.2.2 | 2020 年 9 月 18 日 |
1.2.1 | 2020 年 7 月 7 日 |
0.1.0 | 2020 年 5 月 31 日 |
#1558 in 异步
99,322 每月下载量
用于 208 个 crates (30 直接)
18KB
296 行
async-dup
复制异步 I/O 处理器。
此 crate 提供了两个工具,Arc
和 Mutex
Arc
实现AsyncRead
、AsyncWrite
和AsyncSeek
,如果内部类型的引用存在。- 如果内部类型存在,则
Mutex
的引用实现了AsyncRead
、AsyncWrite
和AsyncSeek
。
将异步 I/O 处理器包裹在 Arc
或 Mutex
中以克隆它或在任务之间共享。
示例
复制异步 I/O 处理器
use async_dup::Arc;
use futures::io;
use smol::Async;
use std::net::TcpStream;
// A client that echoes messages back to the server.
let stream = Async::<TcpStream>::connect("127.0.0.1:8000").await?;
// Create two handles to the stream.
let reader = Arc::new(stream);
let mut writer = reader.clone();
// Echo data received from the reader back into the writer.
io::copy(reader, &mut writer).await?;
共享异步 I/O 处理器
use async_dup::Mutex;
use futures::io;
use futures::prelude::*;
// Reads data from a stream and echoes it back.
async fn echo(stream: impl AsyncRead + AsyncWrite + Unpin) -> io::Result<u64> {
let stream = Mutex::new(stream);
io::copy(&stream, &mut &stream).await
}
许可证
许可如下之一
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,均应按上述方式双许可,不附加任何额外条款或条件。
依赖项
~540KB