2个版本

0.1.0 2024年3月4日
0.1.0-beta.12023年11月17日

异步 中排名 2103

Download history 42/week @ 2024-04-06 29/week @ 2024-04-13 449/week @ 2024-04-20 555/week @ 2024-04-27 332/week @ 2024-05-04 507/week @ 2024-05-11 304/week @ 2024-05-18 316/week @ 2024-05-25 785/week @ 2024-06-01 413/week @ 2024-06-08 689/week @ 2024-06-15 531/week @ 2024-06-22 446/week @ 2024-06-29 566/week @ 2024-07-06 440/week @ 2024-07-13 334/week @ 2024-07-20

每月下载量 1,849
15 个Crates中使用(直接使用3个)

MIT授权 MIT

6KB
80

Compio

MIT licensed crates.io docs.rs Azure DevOps builds Telegram

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

为什么不选择Tokio?

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

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

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

它们不支持Windows。

快速开始

compio作为依赖项添加

compio = { version = "0.9.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有任何疑问,请随时加入我们的Telegram群组。在贡献之前,请查看我们的贡献指南

依赖项

~310–415KB