Rust Project Structure
Basic Rust Project Structure
When you create a new Rust project using cargo new my_rust_project, the directory structure looks like this:
cssCopy codemy_rust_project
├── Cargo.toml
└── src
└── main.rs1. Cargo.toml
Purpose: This is the manifest file for your Rust project. It contains metadata and configuration for your project.
Contents:
Project Metadata: Includes the name, version, and authors of the project.
Dependencies: Lists external libraries (crates) that your project depends on. For example:
tomlCopy code[dependencies] serde = "1.0"Build Settings: Configuration options for building your project.
2. src Directory
Purpose: This directory contains the source code of your project.
Contents:
main.rs: The default entry point of your application. It contains themainfunction, which is where execution starts. For example:rustCopy codefn main() { println!("Hello, world!"); }Other Files: You can add additional
.rsfiles here, such aslib.rsif you want to create a library crate. In a library crate, thelib.rsfile acts as the root of the library.
Advanced Project Structure
As your project grows, you may want to organize your code into multiple modules. Here's a more advanced structure:
Explanation
lib.rs: Used in library crates. It is the main file for library code and is used in combination withmain.rsin a project crate.module1/mod.rs: Defines a module namedmodule1. You can have submodules inside this directory.module1/submodule.rs: Defines a submodule withinmodule1.module2/mod.rs: Defines another module namedmodule2.module2/otherfile.rs: Another file withinmodule2.
Importing Modules
In your main.rs or lib.rs, you can use the mod keyword to declare and use modules:
In
main.rs:In
module1/mod.rs:In
module2/mod.rs:
Summary
Cargo.toml: Project configuration and dependencies.src/main.rs: Entry point for binaries.src/lib.rs: Entry point for libraries (optional, depending on project type).src/module_name/mod.rs: Defines modules and their structure.
This structure helps you keep your code organized, especially as your project becomes more complex. If you have specific questions about any part of the structure or need more details, let me know!
Last updated