pub trait Sleeper { type Sleep: Future<Output = ()> + Send + 'static; // Required method fn sleep(&self, dur: Duration) -> Self::Sleep; }