ruchei 0.1.2

Utilities for working with many streams
Documentation
//! Send-receive many messages concurrently.

use std::time::Instant;

use async_std::task;
use futures_util::{SinkExt, StreamExt};

#[async_std::main]
async fn main() {
    let stream = async_tungstenite::client_async(
        "ws://127.0.0.1:8080/",
        async_net::TcpStream::connect("127.0.0.1:8080")
            .await
            .unwrap(),
    )
    .await
    .unwrap()
    .0;
    let (mut writer, mut reader) = stream.split();
    let task = task::spawn(async move {
        reader.next().await.unwrap().unwrap();
        let start = Instant::now();
        for i in 1..1_000_000 {
            let n: i32 = reader
                .next()
                .await
                .unwrap()
                .unwrap()
                .into_text()
                .unwrap()
                .parse()
                .unwrap();
            assert_eq!(i, n);
        }
        println!("r {:?}", start.elapsed());
    });
    writer.send("0".into()).await.unwrap();
    let start = Instant::now();
    writer
        .send_all(&mut futures_util::stream::iter(
            (1..1_000_000).map(|i| Ok(format!("{i}").into())),
        ))
        .await
        .unwrap();
    println!("w {:?}", start.elapsed());
    task.await;
    writer.close().await.unwrap();
}