use hdf5_pure::{File, FileBuilder};
use ndarray::{Array2, ArrayD, array};
fn main() {
let m: Array2<f64> = array![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
let mut builder = FileBuilder::new();
builder.create_dataset("m").with_ndarray(&m); let file = File::from_bytes(builder.finish().unwrap()).unwrap();
let back: Array2<f64> = file.dataset("m").unwrap().read_array().unwrap();
println!("matrix:\n{back}");
assert_eq!(back, m);
let dynamic: ArrayD<f64> = file.dataset("m").unwrap().read_array_dyn().unwrap();
println!("runtime rank: {}", dynamic.ndim());
assert_eq!(dynamic.shape(), &[2, 3]);
let mut builder = FileBuilder::new();
builder.create_dataset("mt").with_ndarray(&m.t());
let file = File::from_bytes(builder.finish().unwrap()).unwrap();
let transposed: Array2<f64> = file.dataset("mt").unwrap().read_array().unwrap();
assert_eq!(transposed, m.t());
println!("transposed view stored as shape {:?}", transposed.dim());
println!("\nndarray round-trips verified");
}