use futures_util::stream::StreamExt;
use rs2_stream::pipe::*;
use rs2_stream::rs2::*;
use tokio::runtime::Runtime;
fn main() {
let rt = Runtime::new().unwrap();
rt.block_on(async {
let numbers = from_iter(vec![1, 2, 3, 4, 5, 6]);
let even_filter = filter(|&x: &i32| x % 2 == 0);
let double_map = map(|x: i32| x * 2);
let even_then_double = compose(even_filter, double_map);
let result_stream = even_then_double.apply(numbers);
let result = result_stream.collect::<Vec<_>>().await;
println!("Even numbers doubled: {:?}", result);
let numbers = from_iter(vec![1, 2, 3, 4, 5, 6]);
let even_filter = filter(|&x: &i32| x % 2 == 0);
let double_map = map(|x: i32| x * 2);
let even_then_double = even_filter.compose(double_map);
let result_stream = even_then_double.apply(numbers);
let result = result_stream.collect::<Vec<_>>().await;
println!("Even numbers doubled (using compose method): {:?}", result); });
}