5 个不稳定版本
0.3.0 | 2024 年 6 月 17 日 |
---|---|
0.2.0 | 2024 年 4 月 25 日 |
0.1.0 | 2024 年 3 月 4 日 |
0.1.0-beta.2 | 2023 年 12 月 18 日 |
0.1.0-beta.1 | 2023 年 11 月 17 日 |
在 异步 中排名 #1638
每月下载量 1,778
在 8 个 Crates 中使用(6 个直接使用)
120KB
2.5K SLoC
Compio
基于每个核心的线程 Rust 运行时,具有 IOCP/io_uring/polling。名字来源于 "基于完成 IO"。这个 crate 受 monoio 启发。
为什么不使用 Tokio?
Tokio 是一个优秀的通用异步运行时。然而,它是基于轮询的,甚至在 Windows 上使用了 未记录的 API。我们希望有一些新的高级 API 来执行 IOCP/io_uring。
与 tokio-uring
不同,这个运行时不是基于 Tokio 的。这主要是因为在 mio
中没有控制 IOCP 的公共 API,并且 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 群组。在贡献之前,请查看我们的 贡献指南。
依赖项
~0.6–0.9MB
~17K SLoC