pub trait SleepProvider:
Clone
+ Send
+ Sync
+ 'static {
type SleepFuture: Future<Output = ()> + Send + 'static;
// Required method
fn sleep(&self, duration: Duration) -> Self::SleepFuture;
// Provided methods
fn now(&self) -> Instant { ... }
fn wallclock(&self) -> SystemTime { ... }
fn block_advance<T: Into<String>>(&self, _reason: T) { ... }
fn release_advance<T: Into<String>>(&self, _reason: T) { ... }
fn allow_one_advance(&self, _dur: Duration) { ... }
}
Expand description
Trait for a runtime that can wait until a timer has expired.
Every SleepProvider
also implements
SleepProviderExt
; see that trait
for other useful functions.
Required Associated Types§
sourcetype SleepFuture: Future<Output = ()> + Send + 'static
type SleepFuture: Future<Output = ()> + Send + 'static
A future returned by SleepProvider::sleep()
Required Methods§
sourcefn sleep(&self, duration: Duration) -> Self::SleepFuture
fn sleep(&self, duration: Duration) -> Self::SleepFuture
Return a future that will be ready after duration
has
elapsed.
Provided Methods§
sourcefn now(&self) -> Instant
fn now(&self) -> Instant
Return the SleepProvider’s view of the current instant.
(This is the same as Instant::now
, if not running in test mode.)
sourcefn wallclock(&self) -> SystemTime
fn wallclock(&self) -> SystemTime
Return the SleepProvider’s view of the current wall-clock time.
(This is the same as SystemTime::now
, if not running in test mode.)
sourcefn block_advance<T: Into<String>>(&self, _reason: T)
fn block_advance<T: Into<String>>(&self, _reason: T)
Signify that a test running under mock time shouldn’t advance time yet, with a given unique reason string. This is useful for making sure (mock) time doesn’t advance while things that might require some (real-world) time to complete do so, such as spawning a task on another thread.
Call release_advance
with the same reason string in order to unblock.
This method is only for testing: it should never have any effect when invoked on non-testing runtimes.
sourcefn release_advance<T: Into<String>>(&self, _reason: T)
fn release_advance<T: Into<String>>(&self, _reason: T)
Signify that the reason to withhold time advancing provided in a call to block_advance
no
longer exists, and it’s fine to move time forward if nothing else is blocking advances.
This method is only for testing: it should never have any effect when invoked on non-testing runtimes.
sourcefn allow_one_advance(&self, _dur: Duration)
fn allow_one_advance(&self, _dur: Duration)
Allow a test running under mock time to advance time by the provided duration, even if the
above block_advance
API has been used.
This method is only for testing: it should never have any effect when invoked on non-testing runtimes.
Object Safety§
Implementations on Foreign Types§
source§impl SleepProvider for AsyncStd
Available on (crate features native-tls
or rustls
) and (crate features async-std
or tokio
) and crate feature async-std
only.
impl SleepProvider for AsyncStd
native-tls
or rustls
) and (crate features async-std
or tokio
) and crate feature async-std
only.Implementors§
source§impl SleepProvider for AsyncStdNativeTlsRuntime
Available on (crate features native-tls
or rustls
) and crate feature async-std
only.
impl SleepProvider for AsyncStdNativeTlsRuntime
native-tls
or rustls
) and crate feature async-std
only.source§impl SleepProvider for AsyncStdRustlsRuntime
Available on (crate features native-tls
or rustls
) and crate feature async-std
only.
impl SleepProvider for AsyncStdRustlsRuntime
native-tls
or rustls
) and crate feature async-std
only.source§impl SleepProvider for DynTimeProvider
impl SleepProvider for DynTimeProvider
source§impl SleepProvider for PreferredRuntime
impl SleepProvider for PreferredRuntime
type SleepFuture = <TokioNativeTlsRuntime as SleepProvider>::SleepFuture
source§impl SleepProvider for TokioNativeTlsRuntime
Available on (crate features native-tls
or rustls
) and crate feature tokio
only.
impl SleepProvider for TokioNativeTlsRuntime
native-tls
or rustls
) and crate feature tokio
only.type SleepFuture = <CompoundRuntime<TokioRuntimeHandle, TokioRuntimeHandle, RealCoarseTimeProvider, TokioRuntimeHandle, TokioRuntimeHandle, NativeTlsProvider, TokioRuntimeHandle> as SleepProvider>::SleepFuture
source§impl SleepProvider for TokioRustlsRuntime
Available on (crate features native-tls
or rustls
) and crate feature tokio
only.
impl SleepProvider for TokioRustlsRuntime
native-tls
or rustls
) and crate feature tokio
only.