2 个不稳定版本
0.10.0 | 2024年6月11日 |
---|---|
0.9.0 | 2024年5月9日 |
#224 在 过程宏
5,120 每月下载次数
用于 9 个crate(3 直接)
6KB
Winter maybe-async
此crate包含maybe_async
过程属性宏和maybe_await
过程宏,用于抽象Rust的同步/异步。
maybe_async
maybe_async
宏将根据是否启用了async
功能,有条件地向它标记的函数添加async
关键字。要生成异步版本,请在crate上启用async
功能。如果async
功能未开启,将生成同步版本。例如,
// Adding `maybe_async` to trait functions
trait ExampleTrait {
#[maybe_async]
fn say_hello(&self);
#[maybe_async]
fn get_hello(&self) -> String;
}
// Adding `maybe_async` to regular functions
#[maybe_async]
fn hello_world() {
// ...
}
当async
功能启用时,上面的代码将转换为
trait ExampleTrait {
async fn say_hello(&self);
async fn get_hello(&self) -> String;
}
async fn hello_world() {
// ...
}
maybe_await
为了补充maybe_async
,我们还有一个maybe_await
过程宏,它根据async
功能标志有条件地向表达式的末尾添加.await
关键字。
#[maybe_async]
fn hello_world() {
// Adding `maybe_await` to an expression
let w = maybe_await!(world());
println!("hello {}", w);
}
#[maybe_async]
fn world() -> String {
"world".to_string()
}
当async
功能启用时,上面的代码将转换为
async fn hello_world() {
let w = world().await;
println!("hello {}", w);
}
async fn world() -> String {
"world".to_string()
}
许可证
此项目遵循MIT许可证。
依赖关系
~275–720KB
~17K SLoC