Reading wider or differently-signed integers kept the low bits: i64 2^40+5 read as i32 was 5, u64::MAX read as i64 was -1, and -1 read as u64 was 4294967295. u32 data read as i32 also took the bulk-copy fast path meant for i32. Saturate at the target range like libhdf5's hard conversions (a negative value read as unsigned is 0), and keep the i32 fast path to signed data. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
clawhdf5-format
Pure-Rust HDF5 binary format parsing and writing — no C dependencies.
Features
- Zero-copy superblock, object header, and B-tree parsing
- Chunked dataset read/write with filter pipelines
no_stdsupport (disablestdfeature)- Optional parallel reads via Rayon
- SHA-256 provenance tracking
Usage
use clawhdf5_format::Superblock;
let data = std::fs::read("data.h5").unwrap();
let sb = Superblock::from_bytes(&data).unwrap();
println!("HDF5 version {}.{}", sb.version_major(), sb.version_minor());
License
MIT