#![cfg(feature = "rt")] #![warn(rust_2018_idioms)] use tokio::runtime::Builder; use tokio::time::*; use tokio_util::context::RuntimeExt; #[test] fn tokio_context_with_another_runtime() { let rt1 = Builder::new_multi_thread() .worker_threads(1) // no timer! .build() .unwrap(); let rt2 = Builder::new_multi_thread() .worker_threads(1) .enable_all() .build() .unwrap(); // Without the `HandleExt.wrap()` there would be a panic because there is // no timer running, since it would be referencing runtime r1. let _ = rt1.block_on(rt2.wrap(async move { sleep(Duration::from_millis(2)).await })); }