futures-timer
A library for working with timers, timeouts, and intervals with the futures
crate.
# Cargo.toml
[dependencies]
futures-timer = "0.1"
An example of using a Delay
is:
use std::time::Duration;
use futures::prelude::*;
use futures_timer::Delay;
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
Delay::new(Duration::from_secs(3))
.map(|()| println!("printed after three seconds"))
.await?;
}
And using an Interval
:
use std::time::Duration;
use futures::prelude::*;
use futures_timer::Interval;
#[runtime::main]
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
Interval::new(Duration::from_secs(4))
.take(4)
.for_each(|()| Ok(println!("printed after three seconds")))
.await?;
}
Or timing out a future
use std::time::Duration;
use futures_timer::FutureExt;
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
// create a future that will take at most 3 seconds to resolve
let future = long_running_future()
.timeout(Duration::from_secs(3));
}
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.