8 个版本 (稳定)

1.2.4 2023 年 12 月 2 日
1.2.3 2023 年 9 月 25 日
1.2.2 2020 年 9 月 18 日
1.2.1 2020 年 7 月 7 日
0.1.0 2020 年 5 月 31 日

#1558 in 异步

Download history 22954/week @ 2024-03-14 24847/week @ 2024-03-21 20802/week @ 2024-03-28 27011/week @ 2024-04-04 23365/week @ 2024-04-11 25112/week @ 2024-04-18 20311/week @ 2024-04-25 21334/week @ 2024-05-02 23221/week @ 2024-05-09 31537/week @ 2024-05-16 25172/week @ 2024-05-23 24203/week @ 2024-05-30 24994/week @ 2024-06-06 26666/week @ 2024-06-13 25338/week @ 2024-06-20 17274/week @ 2024-06-27

99,322 每月下载量
用于 208 个 crates (30 直接)

Apache-2.0 OR MIT

18KB
296

async-dup

Build License Cargo Documentation

复制异步 I/O 处理器。

此 crate 提供了两个工具,ArcMutex

  • Arc 实现 AsyncReadAsyncWriteAsyncSeek,如果内部类型的引用存在。
  • 如果内部类型存在,则 Mutex 的引用实现了 AsyncReadAsyncWriteAsyncSeek

将异步 I/O 处理器包裹在 ArcMutex 中以克隆它或在任务之间共享。

示例

复制异步 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-2.0 许可证定义的,您有意提交的任何贡献,均应按上述方式双许可,不附加任何额外条款或条件。

依赖项

~540KB