# DIDI File Format This is a *learning* project that demonstrates how to create a custom file format using Rust. The DIDI file format includes capabilities for encoding data to save on storage and metadata to indicate if a specific string is present in the file. ## Features - **Encoding Data**: Stores data by converting it into a specific format using Run-Length Encoding (RLE). - **Metadata**: Indicates whether a specific string is present anywhere in the file. ## Installation Add this to your `Cargo.toml`: ```toml [dependencies] didi_file_format = "0.1.0" ``` ## Usage Here’s a basic example of how to use the DIDI file format in your Rust project. ### Writing to a DIDI File ```rust use didi_file_format::write_didi; fn main() -> std::io::Result<()> { let data = "aaabbcccc"; let search_string = "a3"; write_didi("example.didi", data, search_string)?; Ok(()) } ``` ### Reading from a DIDI File ```rust use didi_file_format::read_didi; fn main() -> std::io::Result<()> { let (decoded_data, stored_search_string) = read_didi("example.didi")?; println!("Decoded Data: {}", decoded_data); println!("Stored Search String: {}", stored_search_string); Ok(()) } ``` ### Using the Sniffer Function ```rust use didi_file_format::sniffer; fn main() -> std::io::Result<()> { let stored_search_string = sniffer("example.didi")?; println!("Sniffer found the stored search string: {}", stored_search_string); Ok(()) } ## License This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. ## Contributing Contributions are welcome! Please open an issue or submit a pull request. ## Contact For any questions or feedback, feel free to reach out. --- Enjoy using the DIDI file format!