compio-rs/compio · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
Compio
一个基于每线程一核的 Rust 运行时,其设计灵感来自 monoio,采用 IOCP/io_uring/轮询机制。
快速开始
添加 compio 作为依赖项:
cargo add compio --features macros,fs
然后使用提供的高级 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);
}
也可以手动使用底层驱动程序(不带异步执行器的 proactor)。参见 driver 示例。
为什么叫这个名字?
这个名字源自“基于完成的 IO”,并遵循了一个不存在的约定,即异步运行时应以后缀“io”命名。
与其他运行时的比较
Tokio
Tokio 是一个优秀的通用异步运行时。然而,它是基于轮询的,甚至在 Windows 上使用了未记录的 API。我们希望有一些新的高级 API 来执行 IOCP/io_uring。
compio 不是基于 tokio 的。这主要是因为 tokio 没有暴露控制 mio 的 API,并且 mio 没有暴露控制 IOCP 的 API。
Monoio
Monoio 专注于 Linux 和 io-uring,并在其他平台上回退到 mio。
Glommio
Glommio 不支持 Windows。
其他
还有许多其他优秀的异步运行时。但大多数(在 compio 创建时)要么是轮询式的,要么不安全地使用 io-uring,要么不是跨平台的。我们希望 compio 能填补这一空白。
贡献
在任何层面都有机会为 Compio 做出贡献。无论你是刚开始接触 Rust 还是经验丰富的专家,我们都需要你的帮助。如果你对 Compio 有任何疑问,请随时加入我们的 telegram 群组。 在贡献之前,请查阅我们的贡献指南。