Cargo,crates and basic project structure
Last updated
Last updated
Cargo is Rust’s built-in Package Manager. But mainly it uses for,
Create new project : cargo new
Update dependencies : cargo update
Build project : cargo build
Build and run a project : cargo run
Run tests : cargo test
Generate documentation via rustdoc : cargo doc
Other than that there are some cargo commands, especially for publishing crates directly via cargo.
cargo login
: acquiring an API token
cargo package
: make the local create uploadable to crates.io
cargo publish
: make the local create uploadable to crates.io and upload the crate
⭐️ A crate is a package. Crates can be shared via .
A crate can produce an executable or a library. In other words, it can be a binary crate or a library crate.
01. cargo new crate_name --bin
: produces an executable
02. cargo new crate_name --lib
OR cargo new crate_name
: produces a library
The first one generates,
and the second one generates,
Cargo.toml(capital c) is the configuration file which contains all of the metadata that Cargo needs to compile your project.
src folder is the place to store the source code.
Each crate has an implicit crate root/ entry point. main.rs is the crate root for a binary crate and lib.rs is the crate root for a library crate.
💡 When we build a binary crate via
cargo build
orcargo run
, the executable file will be stored in target/debug/ folder. But when build it viacargo build --release
for a release it will be stored in target/release/ folder.
Source code goes in the src
directory.
The default library file is src/lib.rs
.
The default executable file is src/main.rs
.
Other executables can be placed in src/bin/*.rs
.
Integration tests go in the tests
directory (unit tests go in each file they're testing).
Examples go in the examples
directory.
Benchmarks go in the benches
directory.
This is how about the recommended Project Layout,