# Rust 模块系统与 Cargo

随着代码变多，你需要**模块**来组织，用 **Cargo** 来管理依赖和构建。这是写真实项目的基础。

## 模块 mod

```rust
mod math {
    pub fn add(a: i32, b: i32) -> i32 { a + b } // pub 才对外可见
    fn secret() -> i32 { 42 }
}

fn main() {
    println!("{}", math::add(2, 3)); // 5
    // math::secret(); // ❌ 私有，无法访问
}
```

`pub` 控制可见性，默认模块内私有。可多层嵌套、可用 `use` 引入：

```rust
use math::add;
fn main() { println!("{}", add(1, 2)); }
```

## Cargo.toml 与依赖

```toml
[package]
name = "demo"
version = "0.1.0"
edition = "2021"

[dependencies]
serde = { version = "1.0", features = ["derive"] }
rand = "0.8"
```

添加后 `cargo build` 自动从 crates.io 拉取并编译。

## 常用命令

```bash
cargo build        # 编译（debug）
cargo build --release  # 优化编译
cargo run          # 编译并运行
cargo test         # 跑测试
cargo add serde    # 直接加依赖（新版 Cargo）
```

## 项目结构建议

```
src/
├── main.rs
├── lib.rs      # 库代码
└── math.rs     # 子模块（在 main.rs 用 mod math; 引入）
```

## 小结

- `mod` + `pub` + `use` 组织代码可见性。
- Cargo 管依赖、构建、测试，一条命令全搞定。
- 想找现成轮子？[crates.io](https://crates.io) 搜索即可。

➡️ [9. 多线程与 Channel](rust-09-threads-channels.md)

