#async-io #tokio #derive #macro-derive #macro

derive-tokio-io

派生 AsyncRead 和 AsyncWrite

1个不稳定版本

0.1.0 2022年11月17日

异步 中排名 #1714

MIT 许可证

12KB
160

License Crates.io Docs

derive-tokio-io

派生 AsyncReadAsyncWrite

用法

如果结构体只有一个字段,则对该字段派生 AsyncReadAsyncWrite

use derive_tokio_io::{AsyncRead, AsyncWrite};
use tokio::net::TcpStream;

#[derive(AsyncRead, AsyncWrite)]
struct Wrapper {
    stream: TcpStream,
}

支持泛型。

use derive_tokio_io::{AsyncRead, AsyncWrite};

#[derive(AsyncRead, AsyncWrite)]
struct Wrapper<IO> {
    stream: IO,
}

如果结构体有多个字段,则每个字段都必须使用 #[async_read]#[async_write] 一次。

use derive_tokio_io::{AsyncRead, AsyncWrite};

#[derive(AsyncRead, AsyncWrite)]
struct Wrapper<R, W> {
    #[async_read]
    reader: R,
    #[async_write]
    writer: W,
}

元组结构体也以相同的方式工作。

use derive_tokio_io::{AsyncRead, AsyncWrite};

#[derive(AsyncRead, AsyncWrite)]
struct Wrapper<R, W>(
    #[async_read]
    R,
    #[async_write]
    W,
);

许可证

本项目根据 MIT许可证 许可。

依赖关系

~1.5MB
~35K SLoC