Add free block_on_all in current thread Runtime (#477)

This commit is contained in:
Jon Gjengset
2018-07-11 15:32:58 -07:00
committed by Carl Lerche
parent 39c95d6206
commit 6ba8e7621d
2 changed files with 51 additions and 0 deletions
+17
View File
@@ -68,3 +68,20 @@ mod runtime;
pub use self::builder::Builder;
pub use self::runtime::{Runtime, Handle};
use futures::Future;
/// Run the provided future to completion using a runtime running on the current thread.
///
/// This first creates a new [`Runtime`], and calls [`Runtime::block_on`] with the provided future,
/// which blocks the current thread until the provided future completes. It then calls
/// [`Runtime::run`] to wait for any other spawned futures to resolve.
pub fn block_on_all<F>(future: F) -> Result<F::Item, F::Error>
where
F: Future,
{
let mut r = Runtime::new().expect("failed to start runtime on current thread");
let v = r.block_on(future)?;
r.run().expect("failed to resolve remaining futures");
Ok(v)
}