Struct Sleep
#[must_use = "futures do nothing unless you `.await` or poll them"]
pub struct Sleep { /* private fields */ }
Future returned by sleep and sleep_until.
This type does not implement the Unpin trait, which means that if you
use it with select! or by calling poll, you have to pin it first.
If you use it with .await, this does not apply.
Examples
Wait 100ms and print "100 ms have elapsed".
use ;
#
# async
Use with select!. Pinning the Sleep with tokio::pin! is
necessary when the same Sleep is selected on multiple times.
use tokio::time::{self, Duration, Instant};
# #[tokio::main(flavor = "current_thread")]
# async fn main() {
let sleep = time::sleep(Duration::from_millis(10));
tokio::pin!(sleep);
loop {
tokio::select! {
() = &mut sleep => {
println!("timer elapsed");
sleep.as_mut().reset(Instant::now() + Duration::from_millis(50));
},
}
}
# }
Use in a struct with boxing. By pinning the Sleep with a Box, the
HasSleep struct implements Unpin, even though Sleep does not.
use Future;
use Pin;
use ;
use Sleep;
Use in a struct with pin projection. This method avoids the Box, but
the HasSleep struct will not be Unpin as a consequence.
use Future;
use Pin;
use ;
use Sleep;
use pin_project;
pin_project!
Implementations
impl Sleep
fn deadline(&self) -> InstantReturns the instant at which the future will complete.
fn is_elapsed(&self) -> boolReturns
trueifSleephas elapsed.A
Sleepinstance is elapsed when the requested duration has elapsed.fn reset(self: Pin<&mut Self>, deadline: Instant)Resets the
Sleepinstance to a new deadline.Calling this function allows changing the instant at which the
Sleepfuture completes without having to create new associated state.This function can be called both before and after the future has completed.
To call this method, you will usually combine the call with
Pin::as_mut, which lets you call the method without consuming theSleepitself.Example
use ; # # asyncSee also the top-level examples.
Trait Implementations
impl Debug for Sleep
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Future for Sleep
type Output = ();fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>
Auto Trait Implementations
impl !Freeze for Sleep
impl !RefUnwindSafe for Sleep
impl !UnsafeUnpin for Sleep
impl !UnwindSafe for Sleep
impl Send for Sleep
impl Sync for Sleep
Blanket Implementations
impl<F> IntoFuture for Sleep
where
F: Future,
type Output = <F as Future>::Output;type IntoFuture = F;fn into_future(self) -> <F as IntoFuture>::IntoFuture
impl<T> Any for Sleep
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Sleep
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Sleep
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for Sleep
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for Sleep
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Sleep
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Sleep
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>