Stream utilities for Tokio.
Stream is an asynchronous sequence of values. It can be thought of as
an asynchronous version of the standard library's
This crate provides helpers to work with them. For examples of usage and a more in-depth description of streams you can also refer to the streams tutorial on the tokio website.
Iterating over a Stream
Due to similarities with the standard library's
Iterator trait, some new
users may assume that they can use
for in syntax to iterate over a
Stream, but this is unfortunately not possible. Instead, you can use a
while let loop as follows:
Returning a Stream from a function
A common way to stream values from a function is to pass in the sender
half of a channel and use the receiver as the stream. This requires awaiting
both futures to ensure progress is made. Another alternative is the
async-stream crate, which contains macros that provide a
and allow you to return an
Conversion to and from AsyncRead/AsyncWrite
It is often desirable to convert a
Stream into an
especially when dealing with plaintext formats streamed over the network.
The opposite conversion from an
AsyncRead into a
Stream is also
another commonly required feature. To enable these conversions,
tokio-util provides the
types when the io feature is enabled.