# Iris Format Rust Porting Plan ## Project Structure ``` iris_rust/ ├── Cargo.toml └── src/ ├── main.rs ├── structures.rs ├── read.rs ├── write.rs └── examples.rs ``` ## Key Components ```mermaid graph TD A[Create Rust Project] --> B[Project Structure] B --> C[Define Data Structures] C --> D[Implement Read Functions] C --> E[Implement Write Functions] D --> F[Serialization/Deserialization] E --> F F --> G[Example Implementation] G --> H[Testing] ``` ## Implementation Steps 1. **Data Structures (structures.rs)**: - TimeStruct, SpectralData, SpectralInfo, OtherInfo, ImageInfo - Main IrisData container 2. **Read Functions (read.rs)**: - Implement read_time, read_spectral_data, etc. - Use std::io::Read trait 3. **Write Functions (write.rs)**: - Implement write_time, write_spectral_data, etc. - Use std::io::Write trait 4. **Example Implementation (examples.rs)**: - Create sample data - Write/read roundtrip test 5. **Main Integration (main.rs)**: - CLI interface - Example execution ## Key Differences from C - Pointers replaced with Vec types - Automatic memory management - Manual serialization instead of memory casting - Comprehensive error handling with Result type