1use std::time::Duration;
4
5use crate::{BoxFuture, Instant, Runtime};
6
7#[derive(Debug, Clone, Copy, Default)]
13pub struct TokioRuntime;
14
15impl Runtime for TokioRuntime {
16 fn spawn(&self, task: BoxFuture<()>) {
17 ::tokio::spawn(task);
18 }
19
20 fn sleep(&self, duration: Duration) -> BoxFuture<()> {
21 Box::pin(::tokio::time::sleep(duration))
22 }
23
24 fn yield_now(&self) -> BoxFuture<()> {
25 Box::pin(::tokio::task::yield_now())
26 }
27
28 fn now(&self) -> Instant {
29 ::tokio::time::Instant::now().into_std()
30 }
31}