Crate:最小的编译单元
概念名称: Crate 是 Rust 最小的编译单元,模块组织 Crate 内部的代码。
语法结构:
┌──────────────────────────────────────┐
│ mod 模块名 { │
│ pub fn 公开函数() { ... } │
│ fn 私有函数() { ... } │
│ } │
│ │
│ 文件模块: │
│ src/module_name.rs 或 │
│ src/module_name/mod.rs │
│ │
│ 使用: │
│ use crate::module::function; │
│ use super::sibling_module; │
└──────────────────────────────────────┘最简示例
rust
▶ Runmod math {
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
}
fn main() {
println!("{}", math::add(1, 2));
}什么是 Crate
┌─────────────────────────────────────────────────────┐
│ Crate 是什么 │
├─────────────────────────────────────────────────────┤
│ │
│ Crate 是 Rust 最小的编译单元 │
│ │
│ 两种类型: │
│ ┌─────────────────────────────────────────────┐ │
│ │ 库 Crate (Library Crate) │ │
│ │ - 不能独立运行,提供可复用的代码 │ │
│ │ - 根文件:src/lib.rs │ │
│ └─────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 二进制 Crate (Binary Crate) │ │
│ │ - 可独立运行的程序 │ │
│ │ - 根文件:src/main.rs │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘为什么用它?
rust
▶ Run// 没有模块:所有代码在一个文件,难以维护
// main.rs 有 1000 行代码...
// 有模块:按功能拆分,清晰可维护
// src/
// ├── main.rs ← 入口
// ├── models.rs ← 数据模型
// ├── handlers.rs ← 请求处理
// └── utils.rs ← 工具函数Package:Crate 的容器
bash
my_package/ # 一个 Package
├── Cargo.toml # Package 的清单文件
├── src/
│ ├── lib.rs # 库 Crate(可选)
│ └── main.rs # 二进制 Crate(可选)
└── tests/ # 集成测试一个 Package 可以包含:
- 至多一个库 Crate
- 多个二进制 Crate
- 但不能只有二进制 Crate 而没有库 Crate
关键代码说明:
| 代码 | 含义 | 为什么这样写 |
|---|---|---|
mod math { ... } | 内联模块 | 适合小模块,代码在同一文件 |
pub fn add(...) | 公开函数 | pub 使外部可访问 |
fn 私有函数() | 私有函数 | 默认私有,模块内可见 |
use crate::... | 引入路径 | 避免重复写完整路径 |