» Make grep CLI App in Rust » 2. Development » 2.1 Folder Structure

Folder Structure

lr_grustep/
|-- src/
|   |-- main.rs       # Main entry point for the CLI app
|   |-- lib.rs        # Module file if you have library code
|   |-- utils.rs      # Additional utility functions or modules
|-- tests/
|   |-- unit.rs       # Unit tests
|-- Cargo.toml        # Rust package manifest
|-- README.md         # Documentation for your project
|-- License           # License information
|-- .gitignore        # Git ignore file

Explanation of each folder/file:

  • src/: This is where your source code resides.

  • src/main.rs: This file contains the main entry point for your CLI application. It's where the execution of your program starts. You'll define your main function here.

  • src/lib.rs: This file is used to define a Rust library. If your project involves reusable code that could be used by other programs, you might organize it into a library. If not, this file may not be necessary for simpler projects.

  • src/utils.rs: This is an example additional module or file where you can place utility functions or code that doesn't fit directly into the main entry point. It's a good practice to organize your code into modules for better maintainability.

  • tests/: This directory is used for organizing your tests.

  • Cargo.toml: This is the Rust package manifest. It contains metadata about your project, dependencies, and other configurations. It's used by Cargo1, the Rust package manager, to build, test, and package your project.

  • README.md: Documentation for your project. It should include information about how to install, configure, and use your CLI app.

  • LICENSE:2 Include a license file that specifies the terms under which your software is distributed.

  • .gitignore: This file specifies intentionally untracked files that Git should ignore. It's useful for preventing certain files and directories from being accidentally committed to version control.

This structure provides a good separation of concerns and makes it easy to expand your project in the future.

Footnotes

  1. What are Cargo and Cargo.toml in Rust?

  2. License file