Expand description
Zero-copy parser for AION v2 file format
This module provides efficient, allocation-free parsing of AION v2 binary files
using the zerocopy crate. It supports both in-memory and memory-mapped file access.
§Format Overview (RFC-0002)
┌─────────────────────────────────────┐
│ FILE HEADER (256 bytes) │ ← Zero-copy parsed
├─────────────────────────────────────┤
│ ENCRYPTED RULES (variable) │ ← Slice reference
├─────────────────────────────────────┤
│ VERSION CHAIN (152 bytes/entry) │ ← Slice reference
├─────────────────────────────────────┤
│ SIGNATURES (112 bytes/entry) │ ← Slice reference
├─────────────────────────────────────┤
│ AUDIT TRAIL (80+ bytes/entry) │ ← Slice reference
├─────────────────────────────────────┤
│ STRING TABLE (variable) │ ← Slice reference
├─────────────────────────────────────┤
│ FILE INTEGRITY HASH (32 bytes) │ ← Slice reference
└─────────────────────────────────────┘§Zero-Copy Benefits
- No allocations: Direct byte slice references
- Memory-mapped I/O: OS-level caching and lazy loading
- Fast random access: Jump to any section instantly
- Minimal overhead: ~100ns to parse header vs ~10µs with serde
§Usage
§In-Memory Parsing
use aion_context::parser::AionParser;
let data = std::fs::read("file.aion").map_err(|e| aion_context::AionError::FileReadError {
path: "file.aion".into(),
source: e,
})?;
let parser = AionParser::new(&data)?;
// Zero-copy header access
let header = parser.header();
println!("File version: {}", header.current_version());
// Zero-copy section access
let string_table_bytes = parser.string_table_bytes()?;§Memory-Mapped Parsing
use aion_context::parser::MmapParser;
let parser = MmapParser::open("large_file.aion")?;
// OS handles memory management
let header = parser.header();
let versions = parser.version_chain_bytes()?;Structs§
- Aion
Parser - Zero-copy parser for AION v2 files
- File
Header - File header structure (256 bytes, RFC-0002 Section 3.1)
- Mmap
Parser - Memory-mapped file parser for large files
Constants§
- FORMAT_
VERSION - Current file format version
- HASH_
SIZE - File integrity hash size (BLAKE3)
- HEADER_
SIZE - Header size in bytes (fixed)
- MAGIC
- Magic number for AION v2 files: “AION” (0x41494F4E)
- SIGNATURE_
ENTRY_ SIZE - Signature entry size in bytes (fixed)
- VERSION_
ENTRY_ SIZE - Version chain entry size in bytes (fixed)