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

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