use ndarray::Ix0;
use round_pipers::Result;
use round_pipers::{Writable, WriteOnlyPipeStream};
use std::io::Cursor;
fn main() -> Result<()> {
let buffer = Vec::new();
let cursor = Cursor::new(buffer);
let pipe = WriteOnlyPipeStream::<_, f64, Ix0, String>::new(cursor, 10, [])?;
pipe.set_metadata("Example stream data".to_string());
pipe.write(5, |mut chunk, _state| {
for (i, value) in chunk.iter_mut().enumerate() {
*value = (i as f64) * 3.14;
}
println!("Wrote 5 f64 values to stream");
})?;
pipe.write(15, |mut chunk, _state| {
for (i, value) in chunk.iter_mut().enumerate() {
*value = (i as f64) + 100.0;
}
println!("Wrote 15 more f64 values to stream");
})?;
println!("Metadata: {:?}", pipe.get_metadata());
let final_cursor = pipe.into_writer();
let final_data = final_cursor.into_inner();
println!("Total bytes written: {}", final_data.len());
println!("Expected: {} bytes", (5 + 15) * 8);
Ok(())
}