1 个不稳定版本
0.1.0 | 2024年7月30日 |
---|
#1074 在 过程宏
每月510次下载
用于 3 crate
7KB
52 代码行
Syncify
物超所值:一个用于编写异步函数的简单Rust宏,一次性编写后,既可以获取异步版本,也可以获取同步版本,同步版本会删除所有 async
函数修饰符和所有 .await
后缀。
状态:它工作正常,但这个crate并不打算作为一个高质量的通用crate。宏的错误消息不好,功能也很基础。但它确实是我们需要的,这就足够了。
用法
在 mod
项上放置 #[syncify(name_of_sync_mod_variant)]
。在该 mod
内部,将所有应与同步版本不同的 use
项使用 #[syncify_replace(<alternate-use-item>)]
注释。
示例
use syncify::syncify;
use syncify::syncify_replace;
#[syncify(greet_sync)]
mod greet {
#[syncify_replace(use crate::speaking_sync::speak;)] // A sync function for speaking.
use crate::speaking::speak; // An async function for speaking.
pub async fn do_greet(name: &str) -> usize {
speak(name).await;
return name.len();
}
}
展开为
use syncify::syncify;
use syncify::syncify_replace;
mod greet {
use crate::speaking::speak; // An async function for speaking.
pub async fn do_greet(name: &str) -> usize {
speak(name).await;
return name.len();
}
}
mod greet_sync {
use crate::speaking_sync::speak; // A sync function for speaking.
pub fn do_greet(name: &str) -> usize {
speak(name);
return name.len();
}
}
依赖关系
~260–710KB
~17K SLoC