pub trait StreamTools: Stream {
    // Provided methods
    fn fast_forward(self) -> FastForward<Self>
       where Self: Sized { ... }
    fn flatten_switch(self) -> FlattenSwitch<Self>
       where Self::Item: Stream,
             Self: Sized { ... }
    fn flat_map_switch<U, F>(self, f: F) -> FlattenSwitch<Map<Self, F>>
       where F: FnMut(Self::Item) -> U,
             U: Stream,
             Self: Sized { ... }
    fn sample<S: Stream>(self, sampler: S) -> Sample<Self, S>
       where Self: Sized { ... }
    fn sample_by_duration(
        self,
        duration: Duration
    ) -> Sample<Self, IntervalStream>
       where Self: Sized { ... }
    fn sample_by_interval(
        self,
        interval: Interval
    ) -> Sample<Self, IntervalStream>
       where Self: Sized { ... }
    fn throttle_last<'a>(self, duration: Duration) -> ThrottleLast<Self>
       where Self: Sized + Send + 'a { ... }
    fn record_delay(self) -> RecordDelay<Self>
       where Self: Sized { ... }
}
Expand description

An extension trait for the Stream trait that provides a variety of convenient combinator functions.

Provided Methods§

source

fn fast_forward(self) -> FastForward<Self>where Self: Sized,

Fast-forwards to the latest value on the underlying stream by polling the underyling until it is Pending.

When the underlying stream terminates, this stream will yield the last value on the underlying stream, if it has not already been yielded.

This behaves like a WatchStream but can be applied to arbitrary streams without requiring a channel.

source

fn flatten_switch(self) -> FlattenSwitch<Self>where Self::Item: Stream, Self: Sized,

Flattens a stream of streams into just one continuous stream. Polls only the latest inner stream.

The stream terminates when the outer stream terminates.

This mirrors the behaviour of the Switch operator in ReactiveX.

source

fn flat_map_switch<U, F>(self, f: F) -> FlattenSwitch<Map<Self, F>>where F: FnMut(Self::Item) -> U, U: Stream, Self: Sized,

Maps a stream like StreamExt::map but flattens nested [Stream]s using flatten_switch.

source

fn sample<S: Stream>(self, sampler: S) -> Sample<Self, S>where Self: Sized,

Samples values from the stream when the sampler yields.

The stream terminates when either the input stream or the sampler stream terminate.

If no value was seen on the input stream when the sampler yields, nothing will be yielded.

This mirrors the behaviour of the Sample operator in ReactiveX.

source

fn sample_by_duration(self, duration: Duration) -> Sample<Self, IntervalStream>where Self: Sized,

Available on crate feature tokio-time only.

Samples values from the stream at intervals of length duration. This is a convenience method which invokes sample_by_interval.

The stream terminates when the input stream terminates.

Uses the default MissedTickBehavior to create an Interval. If another is needed, then configure it on an Interval and use sample_by_interval instead of this method.

This mirrors the behaviour of the Sample operator in ReactiveX.

source

fn sample_by_interval(self, interval: Interval) -> Sample<Self, IntervalStream>where Self: Sized,

Available on crate feature tokio-time only.

Samples values from the stream at intervals. This is a convenience method which invokes sample.

The stream terminates when the input stream terminates.

This mirrors the behaviour of the Sample operator in ReactiveX.

source

fn throttle_last<'a>(self, duration: Duration) -> ThrottleLast<Self>where Self: Sized + Send + 'a,

Available on crate feature tokio-time only.

Throttles values from the stream at intervals of length duration, skipping all but the last value seen in each interval.

Note that this behaves exactly the same as applying fast_forward followed by tokio’s throttle.

The stream terminates after the input stream terminates and any pending timeout expires for the throttling.

source

fn record_delay(self) -> RecordDelay<Self>where Self: Sized,

Available on crate feature test-util only.

Records the duration relative to the time this method was called at which each item is yielded from the stream.

Implementors§

source§

impl<T: Stream> StreamTools for T