#impl-block #async-await #tokio #async-std #generate #blocking #back-end

blockonproc

为impl块中的每个异步方法生成一个阻塞方法。支持使用tokioasync-std后端。

2个不稳定版本

0.2.0 2021年1月11日
0.1.0 2020年11月15日

#22 in #impl-block

Download history • Rust 包仓库 5041/week @ 2024-03-14 • Rust 包仓库 3950/week @ 2024-03-21 • Rust 包仓库 3449/week @ 2024-03-28 • Rust 包仓库 5454/week @ 2024-04-04 • Rust 包仓库 5346/week @ 2024-04-11 • Rust 包仓库 4288/week @ 2024-04-18 • Rust 包仓库 3991/week @ 2024-04-25 • Rust 包仓库 5257/week @ 2024-05-02 • Rust 包仓库 4295/week @ 2024-05-09 • Rust 包仓库 4638/week @ 2024-05-16 • Rust 包仓库 3795/week @ 2024-05-23 • Rust 包仓库 6504/week @ 2024-05-30 • Rust 包仓库 5703/week @ 2024-06-06 • Rust 包仓库 5167/week @ 2024-06-13 • Rust 包仓库 4815/week @ 2024-06-20 • Rust 包仓库 3403/week @ 2024-06-27 • Rust 包仓库

20,607 每月下载量
6 个crate中(直接使用2个) 使用

MIT 许可证

10KB
129 代码行

block_on proc宏

为impl块中的每个异步方法生成一个阻塞方法。支持使用tokioasync-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