Using Streams
A stream is a pipeline for events that returns a value asynchronously to the invoker. Streams
are more useful for items that require the Iterator
trait, while Futures
are more apt for Result
values. When an error occurs throughout a stream, the error will not halt the stream, and polling on the stream will still return other results until the None
value has been returned.
Note
Streams
and Channels
can be a bit confusing for some. Streams
are used for continuous, buffered data, and Channels
are more suited for completed messages between endpoints.
How to do it...
- Inside the
bin
folder, create a new file calledstreams.rs
. - Add the following code and run it with
cargo run --bin streams
:
1 extern crate futures; 2 3 use std::thread; 4 5 use futures::prelude::*; 6 use futures::executor::block_on; 7 use futures::future::poll_fn; 8 use futures::stream::{iter_ok, iter_result}; 9 use futures::channel::mpsc;
- Now, let's add our constants, implementations, and so on:
11 #...