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:
extern crate futures;
extern crate futures_timer;
use std::time::Duration;
use futures::prelude::*;
use futures_timer::Delay;
fn main() {
Delay::new(Duration::from_secs(3))
.map(|()| println!("printed after three seconds"))
.wait()
.unwrap();
}
And using an Interval
:
extern crate futures;
extern crate futures_timer;
use std::time::Duration;
use futures::prelude::*;
use futures_timer::Interval;
fn main() {
Interval::new(Duration::from_secs(4))
.take(4)
.for_each(|()| Ok(println!("printed after three seconds")))
.wait()
.unwrap();
}
Or timing out a future
extern crate futures_timer;
use std::time::Duration;
use futures_timer::FutureExt;
fn main() {
// create a future that will take at most 3 seconds to resolve
let future = long_running_future()
.timeout(Duration::from_secs(3));
}
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.
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.