time: Eagerly bind delays to timer (#1800)

## Motivation

Similar to #1666, it is no longer necessary to lazily register delays with the
executions default timer. All delays are expected to be created from within a
runtime, and should panic if not done so.

## Solution

`tokio::time` now assumes there to be a `CURRENT_TIMER` set when creating a
delay; this can be assumed if called within a tokio runtime. If there is no
current timer, the application will panic with a "no current timer" message.

## Follow-up

Similar to #1666, `HandlePriv` can probably be removed, but this mainly prepares
for 0.2 API changes. Because it is not in the public API, this can be done in a
following change.

Signed-off-by: Kevin Leimkuhler <[email protected]>
This commit is contained in:
Kevin Leimkuhler
2019-11-20 12:24:41 -08:00
committed by Carl Lerche
parent bc150cd0b5
commit 3e643c7b81
8 changed files with 145 additions and 178 deletions
+6 -1
View File
@@ -20,5 +20,10 @@ fn async_fn() {
#[test]
fn test_delay() {
let deadline = Instant::now() + Duration::from_millis(100);
assert_eq!((), block_on(delay_until(deadline)));
assert_eq!(
(),
block_on(async {
delay_until(deadline).await;
})
);
}