use hdf5_pure::{AttrValue, File, FileBuilder};
fn main() {
let mut builder = FileBuilder::new();
builder
.create_dataset("temperature")
.with_f64_data(&[22.5, 23.1, 21.8])
.with_shape(&[3])
.set_attr("unit", AttrValue::AsciiString("degC".into()));
builder.set_attr("version", AttrValue::I64(2));
let bytes = builder.finish().expect("serialize file");
println!("wrote {} bytes", bytes.len());
let file = File::from_bytes(bytes).expect("parse file");
let ds = file.dataset("temperature").expect("open dataset");
println!("shape: {:?}", ds.shape().unwrap());
println!("data: {:?}", ds.read_f64().unwrap());
println!("unit: {:?}", ds.attrs().unwrap().get("unit"));
let root_attrs = file.root().attrs().unwrap();
println!("version: {:?}", root_attrs.get("version"));
assert_eq!(ds.read_f64().unwrap(), vec![22.5, 23.1, 21.8]);
assert_eq!(root_attrs.get("version"), Some(&AttrValue::I64(2)));
println!("\nround-trip verified");
}