#async-stream #stream #shared #async

shared_stream

A crate for easily cloneable streams

4 releases

0.2.1 Feb 4, 2022
0.2.0 Mar 12, 2021
0.1.1 Mar 3, 2021
0.1.0 Mar 2, 2021

#1787 in Asynchronous

AGPL-3.0+

16KB
257 lines

shared_stream is a crate for easily cloneable streams.

Usage

Add this to your Cargo.toml:

[dependencies]
shared_stream = "0.2"

Now, you can use shared_stream:

use shared_stream::Share;

let shared = stream::iter(1..=3).shared();

License

This crate is published under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.


lib.rs:

A crate for easily cloneable Streams, similar to FutureExt::shared.

Examples

use futures::stream::{self, StreamExt};
use shared_stream::Share;

let shared = stream::iter(1..=3).shared();
assert_eq!(shared.clone().take(1).collect::<Vec<_>>().await, [1]);
assert_eq!(shared.clone().skip(1).take(1).collect::<Vec<_>>().await, [2]);
assert_eq!(shared.collect::<Vec<_>>().await, [1, 2, 3]);

Dependencies

~72KB