use crate::executor::Executor;
pub trait FutureExt: Future {
fn block_on(self) -> Self::Output;
}
impl<F: Future> FutureExt for F {
fn block_on(self) -> Self::Output {
Executor::block_on(self)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn block_on_result_ok() {
let x: std::result::Result<(), Box<dyn std::error::Error>> =
async {
Ok(())
}.block_on();
assert!(x.is_ok());
}
#[test]
fn block_on_result_err() {
let x: std::result::Result<(), &str> =
async {
Err("")
}.block_on();
assert!(x.is_err());
}
}