23.3 Directory Structure
A newly created or initialized Cargo project typically looks like this:
my_project/
├── Cargo.toml
├── Cargo.lock
├── src/
│ └── main.rs (or lib.rs for libraries)
└── target/
Cargo.toml
: Main configuration (metadata, dependencies, build settings).Cargo.lock
: Locks specific versions of each dependency.src
: Source code directory. For binary crates,main.rs
; for libraries,lib.rs
.target
: Directory for build artifacts (debug
orrelease
).
Typically, target/
is ignored in version control. Many projects also include a .gitignore
to exclude compiled artifacts. The cargo new
or cargo init
commands create initial files like main.rs
or lib.rs
, and you can add further modules in src
or subfolders. As described in Chapter 17, library projects can also contain application binaries (by creating a bin/
folder under src/
).