包是 Rust 中的编译单元。每当调用 rustc some_file.rs 时,some_file.rs 都会被视为*包文件*。如果 some_file.rs 中有 mod 声明,则模块文件的内容将在编译器运行之前插入到包文件中找到 mod 声明的位置。换句话说,模块*不会*单独编译,只有包才会被编译。

包可以编译成二进制文件或库。默认情况下,rustc 将从包生成二进制文件。可以通过将 --crate-type 标志传递给 lib 来覆盖此行为。