2个不稳定版本
0.2.0 | 2021年1月11日 |
---|---|
0.1.0 | 2020年11月15日 |
#22 in #impl-block
20,607 每月下载量
在 6 个crate中(直接使用2个) 使用
10KB
129 代码行
block_on proc宏
为impl块中的每个异步方法生成一个阻塞方法。支持使用tokio
或async-std
后端。生成的方法定义为_blocking
。
示例 tokio
use block_on::block_on;
struct Tokio {}
#[block_on("tokio")]
impl Tokio {
async fn test_async(&self) {}
}
生成以下impl块
async fn test_async(&self) {}
fn test_async_blocking(&self) {
use tokio::runtime::Runtime;
let mut rt = Runtime::new().unwrap();
rt.block_on(self.test_async())
}
示例 async-std
use block_on::block_on;
struct AsyncStd {}
#[block_on("async-std")]
impl AsyncStd {
async fn test_async(&self) {}
}
在相同的impl块中生成以下方法
async fn test_async(&self) {}
fn test_async_blocking(&self) {
use async_std::task;
task::block_on(self.test_async())
}
依赖项
~1.5MB
~34K SLoC