command-stream 1.6.0

Modern shell command execution library with streaming, async iteration, and event support
Documentation
use command_stream::DataStream;

#[tokio::test]
async fn transforms_batches_and_online_statistics() {
    let result = DataStream::from_values(1..=5)
        .filter(|n| n % 2 == 1)
        .map(|n| n * 2)
        .batch(2)
        .collect()
        .await;
    assert_eq!(result, vec![vec![2, 6], vec![10]]);
    let stats = DataStream::from_values([10.0, 30.0])
        .analyze(|n| *n > 20.0, |n| Some(*n), |_| {})
        .await;
    assert_eq!(stats.count, 2);
    assert_eq!(stats.error_rate, 0.5);
    assert_eq!(stats.response_mean, 20.0);
}

#[tokio::test]
async fn split_merge_and_sliding_windows() {
    let (odd, even) = DataStream::from_values(1..=4).split(|n| n % 2 == 1);
    let (odd, even) = tokio::join!(odd.collect(), even.collect());
    assert_eq!(odd, vec![1, 3]);
    assert_eq!(even, vec![2, 4]);
    let windows = DataStream::from_values(1..=4).window(3).collect().await;
    assert_eq!(windows, vec![vec![1, 2, 3], vec![2, 3, 4]]);
}