1.4 KiB
Crates
The smallest amount of code that the rust compiler will consider
This includes single binary exe files compiled with rustc
cargo build
also counts and so does cargo run
(implicit cargo build
)
Crates can contain modules and modules may be defined in other files that get compiled with the crate
It comes in two forms a library or a binary
Binary Crates
are programs that can be compiled then run like a cli application or a server each must have main function that defines what happens when the executable runs
Library Crates
are programs that don't have a main function and don't compile to a executable instead it defines functionality that is intended to be shared with multiple projects
most of the time when the term "crate" is said it means a library crate and crate is used interchangeably with the term library with other languages
these can be created by cargo new crate_name --lib
Root Crate
this is the source file that the compiler starts from and makes up the root module of your crate
this is normally src/main.rs in a binary crate scr/lib.rs is normally the root in a library crate with the same name as the package hence why it doesn't need to be mentioned in the toml file this tells you what the packages are
cargo passes root crates to rustc to build the library or the binary
by replacing files in the src/bin directory each file will be its own binary crate