6 个版本 (重大变更)
0.5.0 | 2024 年 5 月 27 日 |
---|---|
0.4.0 | 2022 年 11 月 5 日 |
0.3.0 | 2022 年 3 月 4 日 |
0.2.0 | 2022 年 1 月 9 日 |
0.0.0 | 2020 年 11 月 14 日 |
#138 in 异步
15,916 每月下载量
在 35 个 仓库中使用 (直接使用 31 个)
290KB
4.5K SLoC
tokio-uring
此包通过公开一个与 Tokio 兼容但也可以驱动 io-uring
支持的资源的新运行时,为 Tokio 提供 io-uring
支持。任何与 Tokio 工作的库也支持 tokio-uring
。此包提供了与 io-uring
工作的新资源类型。
入门
使用 tokio-uring
需要启动一个 tokio-uring
运行时。此运行时内部管理主 Tokio 运行时和一个 io-uring
驱动程序。
在您的 Cargo.toml 中
[dependencies]
tokio-uring = { version = "0.5.0" }
在您的 main.rs 中
use tokio_uring::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> {
tokio_uring::start(async {
// Open a file
let file = File::open("hello.txt").await?;
let buf = vec![0; 4096];
// Read some data, the buffer is passed by ownership and
// submitted to the kernel. When the operation completes,
// we get the buffer back.
let (res, buf) = file.read_at(buf, 0).await;
let n = res?;
// Display the contents
println!("{:?}", &buf[..n]);
Ok(())
})
}
要求
tokio-uring
需要一个非常新的 Linux 内核。(并非所有带有 io_uring 支持的内核都能工作)特别是 5.4.0
不工作(这是 Ubuntu 20.4 的标准)。然而,5.11.0
(Ubuntu hwe 图像)是可行的。
项目状态
tokio-uring
项目仍然非常年轻。目前,我们专注于支持文件系统和网络操作。最终,我们将添加所有 io-uring 兼容操作的安全 API。
许可证
本项目受 MIT 许可证 许可。
贡献
除非您明确声明,否则您有意提交以供tokio-uring包含的任何贡献,都应按MIT许可证授权,不附加任何额外条款或条件。
依赖项
~3–12MB
~118K SLoC