[−][src]Trait runtime::time::StreamExt
Extend Stream
with methods to time out execution.
Provided methods
fn timeout(self, dur: Duration) -> TimeoutStream<Self>
Creates a new stream which will take at most dur
time to yield each
item of the stream.
This combinator creates a new stream which wraps the receiving stream
in a timeout-per-item. The stream returned will resolve in at most
dur
time for each item yielded from the stream. The first item's timer
starts when this method is called.
If a stream's item completes before dur
elapses then the timer will be
reset for the next item. If the timeout elapses, however, then an error
will be yielded on the stream and the timer will be reset.
Examples
use runtime::time::{Interval, StreamExt as _}; use std::time::{Duration, Instant}; let start = Instant::now(); let mut interval = Interval::new(Duration::from_millis(10)) .take(3) .timeout(Duration::from_millis(15)); while let Some(now) = interval.next().await { println!("{}ms have elapsed", (now? - start).as_millis()); } assert!(Instant::now() - start >= Duration::from_millis(30));