pub struct Sleep { /* private fields */ }Expand description
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 tokio::time::{sleep, Duration};
sleep(Duration::from_millis(100)).await;
println!("100 ms have elapsed");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};
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 std::future::Future;
use std::pin::Pin;
use std::task::{Context, Poll};
use tokio::time::Sleep;
struct HasSleep {
sleep: Pin<Box<Sleep>>,
}
impl Future for HasSleep {
type Output = ();
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {
self.sleep.as_mut().poll(cx)
}
}Use in a struct with pin projection. This method avoids the Box, but
the HasSleep struct will not be Unpin as a consequence.
use std::future::Future;
use std::pin::Pin;
use std::task::{Context, Poll};
use tokio::time::Sleep;
use pin_project_lite::pin_project;
pin_project! {
struct HasSleep {
#[pin]
sleep: Sleep,
}
}
impl Future for HasSleep {
type Output = ();
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {
self.project().sleep.poll(cx)
}
}Implementationsยง
Sourceยงimpl Sleep
impl Sleep
Sourcepub fn is_elapsed(&self) -> bool
pub fn is_elapsed(&self) -> bool
Returns true if Sleep has elapsed.
A Sleep instance is elapsed when the requested duration has elapsed.
Sourcepub fn reset(self: Pin<&mut Sleep>, deadline: Instant)
pub fn reset(self: Pin<&mut Sleep>, deadline: Instant)
Resets the Sleep instance to a new deadline.
Calling this function allows changing the instant at which the Sleep
future 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 the
Sleep itself.
ยงExample
use tokio::time::{Duration, Instant};
let sleep = tokio::time::sleep(Duration::from_millis(10));
tokio::pin!(sleep);
sleep.as_mut().reset(Instant::now() + Duration::from_millis(20));See also the top-level examples.
Trait Implementationsยง
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ยง
Sourceยงimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Sourceยงfn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Sourceยงimpl<T> FutureExt for T
impl<T> FutureExt for T
Sourceยงfn map<U, F>(self, f: F) -> Map<Self, F>
fn map<U, F>(self, f: F) -> Map<Self, F>
Sourceยงfn map_into<U>(self) -> MapInto<Self, U>
fn map_into<U>(self) -> MapInto<Self, U>
Sourceยงfn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
f. Read moreSourceยงfn left_future<B>(self) -> Either<Self, B>
fn left_future<B>(self) -> Either<Self, B>
Sourceยงfn right_future<A>(self) -> Either<A, Self>
fn right_future<A>(self) -> Either<A, Self>
Sourceยงfn into_stream(self) -> IntoStream<Self>where
Self: Sized,
fn into_stream(self) -> IntoStream<Self>where
Self: Sized,
Sourceยงfn flatten(self) -> Flatten<Self>
fn flatten(self) -> Flatten<Self>
Sourceยงfn flatten_stream(self) -> FlattenStream<Self>
fn flatten_stream(self) -> FlattenStream<Self>
Sourceยงfn fuse(self) -> Fuse<Self>where
Self: Sized,
fn fuse(self) -> Fuse<Self>where
Self: Sized,
poll will never again be called once it has
completed. This method can be used to turn any Future into a
FusedFuture. Read moreSourceยงfn inspect<F>(self, f: F) -> Inspect<Self, F>
fn inspect<F>(self, f: F) -> Inspect<Self, F>
Sourceยงfn catch_unwind(self) -> CatchUnwind<Self>where
Self: Sized + UnwindSafe,
fn catch_unwind(self) -> CatchUnwind<Self>where
Self: Sized + UnwindSafe,
Sourceยงfn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)where
Self: Sized,
fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)where
Self: Sized,
() on completion and sends
its output to another future on a separate task. Read moreSourceยงfn boxed<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + Send + 'a>>
fn boxed<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + Send + 'a>>
Sourceยงfn boxed_local<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a>>where
Self: Sized + 'a,
fn boxed_local<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a>>where
Self: Sized + 'a,
Sourceยงfn unit_error(self) -> UnitError<Self>where
Self: Sized,
fn unit_error(self) -> UnitError<Self>where
Self: Sized,
Future<Output = T> into a
TryFuture<Ok = T, Error = ()>.Sourceยงfn never_error(self) -> NeverError<Self>where
Self: Sized,
fn never_error(self) -> NeverError<Self>where
Self: Sized,
Future<Output = T> into a
TryFuture<Ok = T, Error = Never>.Sourceยงimpl<T> FutureExt for T
impl<T> FutureExt for T
Sourceยงfn with_cancellation_token(
self,
cancellation_token: &CancellationToken,
) -> WithCancellationTokenFuture<'_, Self>where
Self: Sized,
fn with_cancellation_token(
self,
cancellation_token: &CancellationToken,
) -> WithCancellationTokenFuture<'_, Self>where
Self: Sized,
CancellationToken::run_until_cancelled,
but with the advantage that it is easier to write fluent call chains. Read moreSourceยงfn with_cancellation_token_owned(
self,
cancellation_token: CancellationToken,
) -> WithCancellationTokenFutureOwned<Self>where
Self: Sized,
fn with_cancellation_token_owned(
self,
cancellation_token: CancellationToken,
) -> WithCancellationTokenFutureOwned<Self>where
Self: Sized,
CancellationToken::run_until_cancelled_owned,
but with the advantage that it is easier to write fluent call chains. Read moreimpl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Sourceยงimpl<T> Instrument for T
impl<T> Instrument for T
Sourceยงfn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Sourceยงfn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Sourceยงimpl<T> IntoEither for T
impl<T> IntoEither for T
Sourceยงfn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSourceยงfn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more