#iocp #fs #async #fs-file

tokio-iocp

为 Tokio 异步运行时提供 IOCP 支持

6 个版本

0.2.3 2023 年 8 月 24 日
0.2.2 2023 年 4 月 2 日
0.2.1 2023 年 3 月 27 日
0.1.4 2023 年 3 月 27 日
0.1.1 2022 年 9 月 9 日

#1335 in 异步

MIT 许可证

140KB
2.5K SLoC

tokio-iocp

crates.io docs.rs

此 crate 受 tokio-uring 启发,通过公开一个新的与 Tokio 兼容且可以驱动 IOCP 支持的资源兼容的运行时,为 Tokio 提供 IOCP。任何与 Tokio 工作的库也适用于 tokio-iocp。该 crate 提供了与 IOCP 一起工作的新资源类型。

入门指南

使用 tokio-iocp 需要启动一个 tokio-iocp 运行时。此运行时内部管理主要的(单线程)Tokio 运行时和一个 IOCP 驱动程序。

use tokio_iocp::fs::File;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    tokio_iocp::start(async {
        // Open a file
        let file = File::open("hello.txt")?;

        let buf = Vec::with_capacity(4096);
        // Read some data, the buffer is passed by ownership and
        // submitted to the kernel. When the operation completes,
        // we get the buffer back.
        let (res, buf) = file.read_at(buf, 0).await;
        let n = res?;

        // Display the contents
        println!("{:?}", &buf);

        Ok(())
    })
}

要求

Windows。

项目状态

tokio-iocp 项目还非常年轻。目前,我们专注于支持文件系统和网络操作。我们期待您的贡献!

许可证

此项目受 MIT 许可证 许可。

依赖

~21–34MB
~472K SLoC