53 lines
1.3 KiB
Markdown
53 lines
1.3 KiB
Markdown
|
# 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
|