5个版本 (3个重大更新)
0.4.0 | 2024年6月17日 |
---|---|
0.3.0 | 2024年4月25日 |
0.2.0 | 2024年3月4日 |
0.2.0-beta.1 | 2023年11月17日 |
0.1.0 | 2023年10月7日 |
#1013 in 异步
每月下载量 1,649
在 15 个crate中(9个直接) 使用
45KB
963 行
Compio
一个基于每个核心的Rust运行时,支持IOCP/io_uring/polling。该名称来自“基于完成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群组。在贡献之前,请查看我们的贡献指南。
依赖项
~165KB