5个版本
0.1.0 | 2023年12月29日 |
---|---|
0.1.0-alpha.5 | 2023年10月20日 |
0.1.0-alpha.2 | 2023年5月29日 |
0.1.0-alpha.1 | 2023年5月24日 |
0.0.0 | 2023年5月19日 |
#582 in 异步
每月128次下载
42KB
1K SLoC
ARAL - 异步运行时聚合层
ARAL是应用程序和异步任务执行器之间的聚合层。它允许您在不修改应用程序代码的情况下轻松切换执行器。
运行时
注意:库不应启用任何运行时功能。您可以通过使用cargo功能来选择执行器。只能启用一个运行时。有效的功能包括
- runtime-tokio
- runtime-async-std
原理
-
不实现异步运行时。
不实现具体的异步运行时,只聚合现成的异步运行时。
-
最小化。
尽量保持最小化,仅添加必要的功能,不添加额外的工具(如通道)。
-
与std保持一致。
异步API风格应尽可能与std的同步API保持一致。
示例
对于库,将aral
作为依赖项使用,并不要启用任何runtime-*
功能。
# Cargo.toml
[package]
name = "foo"
version = "0.1.0"
edition = "2021"
[dependencies]
aral = "*"
// lib.rs
use aral::fs::File;
use std::io::Result;
pub async fn is_file(path: &str) -> Result<bool> {
let file = File::open(path).await?;
let metadata = file.metadata().await?;
Ok(metadata.is_file())
}
对于应用程序,将aral
作为依赖项使用,并启用一个runtime-*
功能。
# Cargo.toml
[package]
name = "app"
version = "0.1.0"
edition = "2021"
[dependencies]
aral = { version = "*", features = ["runtime-tokio"] }
tokio = { version = "1.33.0", features = ["full"] }
foo = "0.1.0"
// main.rs
use foo::is_file;
#[tokio::main]
async fn main() {
let path = "/tmp/some-file.txt";
println!("{} is file: {:?}", path, is_file(path).await);
}
现在,您可以通过启用其他runtime-*
功能轻松地在异步运行时之间切换。
许可证
Apache-2.0 OR MIT OR MulanPSL-2.0
依赖项
~0–13MB
~110K SLoC