Get rid of Enter for with_default (#1315)

We want executors to enforce that there are never multiple active at the
same time. This is ensured through `Enter`, which will panic if you
attempt to create more than one. However, by requiring you to pass an
`&mut Enter` to `executor::with_default`, we were *also* disallowing
temporarily overriding the current executor.

This patch removes that requirement.
This commit is contained in:
Jon Gjengset
2019-07-16 14:29:35 -04:00
committed by GitHub
parent 6d186fe40e
commit 003b4d8074
10 changed files with 49 additions and 77 deletions
+3 -4
View File
@@ -58,7 +58,6 @@ use std::task::Waker;
use std::time::{Duration, Instant};
use std::{fmt, usize};
use tokio_executor::park::{Park, Unpark};
use tokio_executor::Enter;
use tokio_sync::task::AtomicWaker;
/// The core reactor, or event loop.
@@ -162,9 +161,9 @@ fn _assert_kinds() {
/// # Panics
///
/// This function panics if there already is a default reactor set.
pub fn with_default<F, R>(handle: &Handle, enter: &mut Enter, f: F) -> R
pub fn with_default<F, R>(handle: &Handle, f: F) -> R
where
F: FnOnce(&mut Enter) -> R,
F: FnOnce() -> R,
{
// Ensure that the executor is removed from the thread-local context
// when leaving the scope. This handles cases that involve panicking.
@@ -203,7 +202,7 @@ where
*current = Some(handle.clone());
}
f(enter)
f()
})
}