empty.rs |
|
1131 |
iter.rs |
|
1475 |
lib.rs |
Stream utilities for Tokio.
A `Stream` is an asynchronous sequence of values. It can be thought of as
an asynchronous version of the standard library's `Iterator` trait.
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](https://tokio.rs/tokio/tutorial/streams) 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:
```rust
use tokio_stream::{self as stream, StreamExt};
#[tokio::main]
async fn main() {
let mut stream = stream::iter(vec![0, 1, 2]);
while let Some(value) = stream.next().await {
println!("Got {}", value);
}
}
```
# 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 `yield` keyword
and allow you to return an `impl Stream`.
[async-stream]: https://docs.rs/async-stream
# Conversion to and from AsyncRead/AsyncWrite
It is often desirable to convert a `Stream` into an [`AsyncRead`],
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 [`StreamReader`] and [`ReaderStream`]
types when the io feature is enabled.
[`tokio-util`]: https://docs.rs/tokio-util/0.4/tokio_util/codec/index.html
[`tokio::io`]: https://docs.rs/tokio/1.0/tokio/io/index.html
[`AsyncRead`]: https://docs.rs/tokio/1.0/tokio/io/trait.AsyncRead.html
[`AsyncWrite`]: https://docs.rs/tokio/1.0/tokio/io/trait.AsyncWrite.html
[`ReaderStream`]: https://docs.rs/tokio-util/0.4/tokio_util/io/struct.ReaderStream.html
[`StreamReader`]: https://docs.rs/tokio-util/0.4/tokio_util/io/struct.StreamReader.html |
3238 |
macros.rs |
|
1383 |
once.rs |
|
1191 |
pending.rs |
|
1280 |
stream_ext |
|
|
stream_ext.rs |
|
34505 |
stream_map.rs |
|
20137 |
wrappers |
|
|
wrappers.rs |
Wrappers for Tokio types that implement `Stream`. |
1149 |