2 unstable releases
0.2.0 | Jan 11, 2021 |
---|---|
0.1.0 | Nov 15, 2020 |
#24 in #impl-block
20,824 downloads per month
Used in 6 crates
(2 directly)
10KB
129 lines
block_on proc macro
Generate a blocking method for each async method in an impl block. Supports either tokio
or async-std
backend.
Generated methods are suffixed with _blocking
.
Example tokio
use block_on::block_on;
struct Tokio {}
#[block_on("tokio")]
impl Tokio {
async fn test_async(&self) {}
}
Generates the following impl block
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())
}
Example async-std
use block_on::block_on;
struct AsyncStd {}
#[block_on("async-std")]
impl AsyncStd {
async fn test_async(&self) {}
}
Generates the following method in the same impl block
async fn test_async(&self) {}
fn test_async_blocking(&self) {
use async_std::task;
task::block_on(self.test_async())
}
Dependencies
~1.5MB
~37K SLoC