rustyhdf5_format/lib.rs
1//! Pure-Rust HDF5 binary format parsing and writing.
2//!
3//! `rustyhdf5-format` is a zero-dependency (no C libhdf5) crate for reading and
4//! writing HDF5 files. It supports `no_std` environments with the `alloc` crate.
5//!
6//! # Writing files
7//!
8//! Use [`file_writer::FileWriter`] to create HDF5 files:
9//!
10//! ```rust
11//! use rustyhdf5_format::file_writer::{FileWriter, AttrValue};
12//!
13//! let mut fw = FileWriter::new();
14//! fw.create_dataset("data")
15//! .with_f64_data(&[1.0, 2.0, 3.0])
16//! .with_shape(&[3])
17//! .set_attr("unit", AttrValue::String("m/s".into()));
18//! let bytes = fw.finish().unwrap();
19//! ```
20//!
21//! # Reading files
22//!
23//! Parsing follows the HDF5 object model: superblock → object header → messages.
24//!
25//! ```rust,no_run
26//! use rustyhdf5_format::{signature, superblock, object_header, group_v2,
27//! datatype, dataspace, data_layout, data_read, message_type::MessageType};
28//!
29//! let file_data = std::fs::read("output.h5").unwrap();
30//! let sig = signature::find_signature(&file_data).unwrap();
31//! let sb = superblock::Superblock::parse(&file_data, sig).unwrap();
32//! let addr = group_v2::resolve_path_any(&file_data, &sb, "data").unwrap();
33//! let hdr = object_header::ObjectHeader::parse(
34//! &file_data, addr as usize, sb.offset_size, sb.length_size).unwrap();
35//! ```
36//!
37//! # Features
38//!
39//! | Feature | Default | Description |
40//! |---------|---------|-------------|
41//! | `std` | yes | Standard library support |
42//! | `checksum` | yes | Jenkins lookup3 checksum validation |
43//! | `deflate` | yes | Deflate (gzip) compression via `flate2` |
44//! | `provenance` | yes | SHINES provenance — SHA-256 hashing & verification |
45
46#![cfg_attr(not(feature = "std"), no_std)]
47
48#[cfg(not(feature = "std"))]
49extern crate alloc;
50
51pub mod attribute;
52pub mod attribute_info;
53pub mod chunk_cache;
54pub mod chunked_read;
55pub mod chunked_write;
56pub mod file_writer;
57pub mod metadata_index;
58pub mod object_header_writer;
59pub mod type_builders;
60pub mod btree_v1;
61pub mod checksum;
62pub mod btree_v2;
63pub mod fractal_heap;
64pub mod group_info;
65pub mod group_v2;
66pub mod link_info;
67pub mod link_message;
68pub mod data_layout;
69pub mod data_read;
70pub mod filter_pipeline;
71pub mod extensible_array;
72pub mod fixed_array;
73pub mod filters;
74#[cfg(feature = "parallel")]
75pub mod lane_partition;
76#[cfg(feature = "parallel")]
77pub mod parallel_read;
78pub mod dataspace;
79pub mod datatype;
80pub mod error;
81pub mod global_heap;
82pub mod group_v1;
83pub mod local_heap;
84pub mod message_type;
85pub mod object_header;
86pub mod shared_message;
87pub mod signature;
88pub mod superblock;
89pub mod symbol_table;
90pub mod vl_data;
91
92#[cfg(feature = "provenance")]
93pub mod provenance;