模块系统与 Cargo
Rust 通过 crate 与 mod 体系组织代码,辅以 Cargo 管理构建与依赖,形成清晰的工程结构。
crate 与 mod
crate 是 Rust 的编译单元,分为二进制(binary)与库(library)两种。crate 内部用 mod 关键字声明子模块,可嵌套形成树形结构。同文件内的模块用 mod name { ... },跨文件可用 mod name; 引入同名文件。
mod utils;
fn main() { utils::hello(); }
use 与路径
use 把路径引入当前作用域,避免重复书写。路径分绝对(以 crate:: 开头)与相对(以 self:: 或 super:: 开头)两种。可以用 as 重命名,用 * 通配(慎用于大型项目)。
pub 可见性
默认情况下,模块内项对外部不可见。pub 修饰的项对外公开;pub(crate) 限制为 crate 内部可见;pub(super) 限制为父模块可见。这一粒度让库作者可以精确控制 API 边界。
Cargo.toml 常用段
Cargo.toml 中常见的段包括 [package](名称、版本、作者)、[dependencies](运行期依赖)、[dev-dependencies](仅测试)、[features](条件编译特性),以及 [lib] 与 [[bin]](目标配置)。
依赖与工作空间
通过 cargo add 添加依赖,版本可写为 "1.0"、"^1.0" 等语义化约束。Cargo.lock 锁定具体版本,应入库以保证可重现构建。
多 crate 协作时,使用工作空间(workspace):根 Cargo.toml 通过 [workspace] 列出 members,共享同一 Cargo.lock 与 target/ 目录,适合大型项目拆分。