Make tokio::run panic if called from inside tokio::run (#646)

This is implemented by creating an `Enter` instance from within `run`.

This patch also introduces `Enter::block_on`.

Fixes #504
This commit is contained in:
Eliza Weisman
2018-09-18 21:57:21 -07:00
committed by Carl Lerche
parent 85f8522536
commit 98d23b8b29
3 changed files with 25 additions and 1 deletions
+4 -1
View File
@@ -125,6 +125,7 @@ use reactor::{Background, Handle};
use std::io;
use tokio_executor::enter;
use tokio_threadpool as threadpool;
use futures;
@@ -210,7 +211,9 @@ where F: Future<Item = (), Error = ()> + Send + 'static,
{
let mut runtime = Runtime::new().unwrap();
runtime.spawn(future);
runtime.shutdown_on_idle().wait().unwrap();
enter().expect("nested tokio::run")
.block_on(runtime.shutdown_on_idle())
.unwrap();
}
impl Runtime {