Skip to main content

Clock

Trait Clock 

Source
pub trait Clock: Send + Sync {
    // Required methods
    fn now(&self) -> SystemTime;
    fn elapsed(&self) -> Duration;
    fn sleep_until(
        &self,
        at: SystemTime,
    ) -> Pin<Box<dyn Future<Output = Result<(), WallTimerError>> + Send>>;

    // Provided methods
    fn deadline(
        &self,
        duration: Duration,
    ) -> Pin<Box<dyn Future<Output = ()> + Send>> { ... }
    fn wait_out(
        &self,
        wait: Duration,
    ) -> Pin<Box<dyn Future<Output = ()> + Send>> { ... }
}
Expand description

The wall clock that timestamps use (§7.2).

Returning SystemTime preserves pre-epoch and out-of-range readings so the timestamp layer can reject them when converting to 48-bit milliseconds.

Required Methods§

Source

fn now(&self) -> SystemTime

The wall clock’s current time.

Source

fn elapsed(&self) -> Duration

Monotonic time since an arbitrary origin, counting time the system spent asleep (§16.6). Readings never decrease within a process; only differences between two readings of one clock mean anything.

Source

fn sleep_until( &self, at: SystemTime, ) -> Pin<Box<dyn Future<Output = Result<(), WallTimerError>> + Send>>

Wait until the wall clock reads at or later, however it gets there: by running, or by being set past it (§13.2). A time already reached ends the wait at once, and a clock set back moves the wait’s end with it. The clock itself says when it reaches at; nothing reads it again on a timer. A clock that can’t say fails the wait.

Provided Methods§

Source

fn deadline( &self, duration: Duration, ) -> Pin<Box<dyn Future<Output = ()> + Send>>

End once duration of elapsed time has passed: a deadline that work races, such as a sign-in’s wait for its callback or a stalled transfer’s, or an interval, such as the idle time between passes. System clocks use the runtime’s monotonic timer; controlled clocks wake only when their supplied time advances.

Source

fn wait_out(&self, wait: Duration) -> Pin<Box<dyn Future<Output = ()> + Send>>

Wait out wait before trying again: a backoff, a provider’s cooldown, or the spacing between requests the code chose. It passes as a deadline of the same length does; a test’s clock may move its time to the wait’s end as the code arms it, since no work races it.

Implementors§

Source§

impl Clock for FixedClock

Available on crate feature test-utils only.
Source§

impl Clock for PollingClock

Source§

impl Clock for SystemClock

Source§

impl<F: Fn() -> SystemTime + Send + Sync> Clock for ClosureClock<F>

Available on crate feature test-utils only.
Source§

impl<S: Clone + PartialEq + Send + Sync> Clock for RecordingClock<S>

Available on crate feature test-utils only.