6个版本 (3个重大变更)

0.4.0 2024年6月17日
0.3.0 2024年4月25日
0.2.0 2024年3月4日
0.2.0-beta.22023年12月18日
0.1.0 2023年10月7日

#1312 in 异步

Download history 621/week @ 2024-04-26 357/week @ 2024-05-03 409/week @ 2024-05-10 336/week @ 2024-05-17 264/week @ 2024-05-24 642/week @ 2024-05-31 438/week @ 2024-06-07 860/week @ 2024-06-14 475/week @ 2024-06-21 467/week @ 2024-06-28 449/week @ 2024-07-05 440/week @ 2024-07-12 274/week @ 2024-07-19 419/week @ 2024-07-26 349/week @ 2024-08-02 482/week @ 2024-08-09

每月1,575次下载
3 个Crates中使用 (通过 compio)

MIT 许可证

460KB
10K SLoC

Compio

MIT licensed crates.io docs.rs Check Test Telegram

一个基于IOCP/io_uring/polling的按核心线程的Rust运行时。这个名字来源于“基于完成的IO”。这个crate受到了monoio的启发。

为什么不是Tokio?

Tokio是一个优秀的通用异步运行时。然而,它是基于poll的,甚至在Windows上使用了未记录的API。我们希望有一些新的高级API来执行IOCP/io_uring。

tokio-uring不同,这个运行时不是基于Tokio的。这主要是因为在mio中没有公开API来控制IOCP,并且tokio不会在mio达到1.0之前公开API来控制mio

为什么不是monoio/tokio-uring/glommio?

它们不支持Windows。

快速开始

compio添加为依赖项

compio = { version = "0.10.0", features = ["macros"] }

然后我们可以使用高级API来执行文件系统和网络IO。

use compio::{fs::File, io::AsyncReadAtExt};

#[compio::main]
async fn main() {
    let file = File::open("Cargo.toml").await.unwrap();
    let (read, buffer) = file.read_to_end_at(Vec::with_capacity(1024), 0).await.unwrap();
    assert_eq!(read, buffer.len());
    let buffer = String::from_utf8(buffer).unwrap();
    println!("{}", buffer);
}

您还可以手动控制低级驱动程序。请参阅仓库中的driver示例。

贡献

Compio在任何级别都有贡献的机会。无论你是刚开始学习Rust还是经验丰富的专家,我们都可以使用你的帮助。如果你对Compio有任何疑问,欢迎加入我们的telegram群组。在贡献之前,请查看我们的贡献指南

依赖项

~2–12MB
~144K SLoC