Z
ZHANK
工程化

模块系统

mod 声明、pub 可见性、use 导入、super/crate/self 路径

模块系统

Rust 的模块系统——mod 声明、pub 可见性、use 导入——控制代码组织和可见性。

学完本章你将: 掌握 mod 声明、pub 可见性、use 导入、路径。


模块组织

src/
├── main.rs
├── lib.rs          # 库根
├── models/
│   ├── mod.rs      # 模块声明
│   └── user.rs
└── services/
    └── auth.rs
rust
// lib.rs
pub mod models;     // 声明 models 模块
pub mod services;

// models/mod.rs
pub mod user;       // 声明子模块

// models/user.rs
pub struct User {
    pub name: String,
    age: u32,       // age 是私有的
}

impl User {
    pub fn new(name: &str, age: u32) -> Self {
        User { name: name.to_string(), age }
    }
}

use 导入

rust
// 绝对路径
use crate::models::user::User;

// 相对路径
use super::models::User;

// 重导出
pub use crate::models::user::User;  // 外部可以直接 use mylib::User

// 批量导入
use std::collections::{HashMap, HashSet};
use std::io::*;  // 导入所有公开项

// 别名
use std::io::Result as IoResult;

可见性规则

rust
mod front_of_house {
    pub mod hosting {
        pub fn add_to_waitlist() { }
        fn seat_at_table() { }  // 私有——外部不可见
    }
}

// hosting 模块是 pub 的,但 front_of_house 不是
// crate::front_of_house::hosting::add_to_waitlist();  // ✅