16个版本 (10个重大更改)

0.11.0 2024年6月17日
0.9.0 2024年3月4日
0.9.0-beta.42023年12月18日
0.9.0-beta.32023年11月24日

#269 in 异步

Download history 621/week @ 2024-04-26 357/week @ 2024-05-03 410/week @ 2024-05-10 332/week @ 2024-05-17 261/week @ 2024-05-24 639/week @ 2024-05-31 435/week @ 2024-06-07 858/week @ 2024-06-14 471/week @ 2024-06-21 469/week @ 2024-06-28 448/week @ 2024-07-05 439/week @ 2024-07-12 269/week @ 2024-07-19 452/week @ 2024-07-26 350/week @ 2024-08-02 481/week @ 2024-08-09

每月1,603次下载
5 crates 中使用

MIT 许可证

345KB
7.5K SLoC

Compio

MIT licensed crates.io docs.rs Check Test Telegram

基于IOCP/io_uring/polling的线程每核心Rust运行时。该名称来源于“基于完成的I/O”。这个crate受到了monoio的启发。

为什么不选择Tokio?

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

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

为什么不选择monoio/tokio-uring/glommio?

它们不支持Windows。

快速入门

compio作为依赖项添加

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

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

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有任何疑问,请随时加入我们的电报群组。在贡献之前,请查看我们的贡献指南

依赖项

~1–17MB
~235K SLoC