maitake::time

Function try_sleep

Source
pub fn try_sleep(duration: Duration) -> Result<Sleep<'static>, TimerError>
Expand description

Returns a Future that completes after the specified Duration.

This function uses the global default timer, and the returned Timeout future will live for the 'static lifetime. See the module-level documentation for details on using the global default timer.

§Returns

§Panics

This function does not panic. For a version of this function that panics rather than returning a TimerError, use sleep() instead.

§Examples

use maitake::time;

async fn example() {
    // try to sleep for one second
    match time::try_sleep(time::Duration::from_secs(1)) {
        // the sleep future was created successfully, so we can now await it.
        Ok(sleep) => {
            sleep.await;
            println!("one second has passed!");
        },
        Err(time::TimerError::NoGlobalTimer) =>
            println!("timer is not initialized"),
        Err(time::TimerError::DurationTooLong { .. }) =>
            unreachable!("1 second should not exceed the max duration"),
        Err(error) => panic!("unexpected timer error: {error}"),
    }
}