Documentation and Rust Implementation to learn how most famous file formats store data.
--- ## 📜 About - [Documentation](./documentation/): Explains the theory for each file format, the advantages and disadvantages compared to other file formats in the same category, why it is stored in that way, and the **User Manual** for the implementation. - [`fileformats` Implementation](./src/): **Command-Line Interface and Rust Library** to cover most common features of each file format, and understand practically how the theory works. The features of the implementation include, but is not limited to, **read, write, convert, and compare** between file formats. ## Getting Started ### Prerequisites #### Rust Toolchain The current Minimum Supported [Rust](https://www.rust-lang.org/) Version (MSRV) is **v1.74.0**. The project is **tested** against the following Rust versions: - **Minimum Supported Rust Version (MSRV): v1.74.0** - **Latest Stable Version** #### Rust Globally Installed Crate The project requires [cargo-run-bin v1.7.2](https://crates.io/crates/cargo-run-bin) to be installed globally. It can be installed using the following command: ```sh cargo install cargo-run-bin@1.7.2 ``` #### External Linting Tools (optional) **External linting tools** are used to ensure a consistent code style and commit message format. They are **used in the Continuous Integration (CI)** pipeline and **can be optionally used locally**. They have to be installed using [Node.js](https://nodejs.org/) >= v20.0.0 and [npm](https://www.npmjs.com/) >= v10.0.0. - [editorconfig-checker](https://editorconfig-checker.github.io/) (`npm install --global editorconfig-checker@5.1.2`) - [Prettier](https://prettier.io/) v3.2.4 (`npm install --global prettier@3.2.4`) - [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) v0.12.1 (`npm install --global markdownlint-cli2@0.12.1`) - [commitlint](https://commitlint.js.org/#/) v18.6.0 (`npm install --global @commitlint/cli@18.6.0 @commitlint/config-conventional@18.6.0`) ### Usage ```sh # Run `fileformats` CLI cargo run -- --help # Documentation cargo bin mdbook serve # Build, Lint, and Test cargo build cargo test cargo clippy --verbose -- -D warnings cargo fmt -- --check # External Linting Tools Usage (optional) editorconfig-checker prettier . --check markdownlint-cli2 echo 'chore: try commitlint' | commitlint ``` ## 💡 Contributing Anyone can help to improve the project, submit a Feature Request, a bug report or even correct a simple spelling mistake. The steps to contribute can be found in the [CONTRIBUTING.md](./CONTRIBUTING.md) file. ## 📄 License [MIT](./LICENSE)