summaryrefslogtreecommitdiffstats
path: root/src/doc/rust-by-example/src/crates.md
blob: b954eec6cd52d42e9ed16a6c188a0da4096b0cbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
# Crates

A crate is a compilation unit in Rust. Whenever `rustc some_file.rs` is called,
`some_file.rs` is treated as the *crate file*. If `some_file.rs` has `mod`
declarations in it, then the contents of the module files would be inserted in
places where `mod` declarations in the crate file are found, *before* running
the compiler over it. In other words, modules do *not* get compiled
individually, only crates get compiled.

A crate can be compiled into a binary or into a library. By default, `rustc`
will produce a binary from a crate. This behavior can be overridden by passing
the `--crate-type` flag to `lib`.