模块与 mod
组织代码
模块与 mod 是 CoddyKit 上的免费 Learn Rust Coding 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn Rust Coding 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn Rust Coding 课程共包含 4 节课。
为什么需要模块
随着程序不断变大,把所有内容放在一个文件中会变得杂乱。模块可以让您将相关代码分组,控制哪些内容是公开的,并避免名称冲突。
mod 关键字用于声明模块。
声明内联模块
您可以使用 mod name { ... } 直接在文件中定义模块。大括号之间的所有内容都属于该模块。
mod greetings {
fn hello() {
println!("hello from the module");
}
}
fn main() {
println!("module declared above");
}调用模块函数
模块中的项目默认是私有的。要从外部调用某个项目,它必须是 pub,并且要使用包含模块路径的 :: 来引用它。
mod greetings {
pub fn hello() {
println!("hello!");
}
}
fn main() {
greetings::hello();
}嵌套模块
模块可以包含其他模块,从而形成一棵树。路径会使用 :: 分隔并列出每一层。
mod app {
pub mod ui {
pub fn draw() {
println!("drawing ui");
}
}
}
fn main() {
app::ui::draw();
}模块不只用于分组函数
模块可以包含函数、结构体、枚举、常量,甚至其他模块。这样可以将相关类型和行为放在一起。
mod shapes {
pub struct Circle {
pub radius: f64,
}
pub const PI: f64 = 3.14159;
}
fn main() {
let c = shapes::Circle { radius: 2.0 };
println!("area = {}", shapes::PI * c.radius * c.radius);
}模块树
每个 crate 都有一个根模块。您声明的模块会在其下方形成一棵树。路径描述项目所在的位置,类似于文件系统中的文件夹。
super:父模块
在模块内部,super 指代父模块。它允许子模块调用上一级定义的内容。
fn top_level() {
println!("called via super");
}
mod inner {
pub fn run() {
super::top_level();
}
}
fn main() {
inner::run();
}self:当前模块
self 指代当前模块。它主要用于明确说明项目在路径中的位置。
mod tools {
pub fn helper() {
println!("helper running");
}
pub fn run() {
self::helper();
}
}
fn main() {
tools::run();
}分文件存放模块
除了内联模块之外,mod network;(带分号且没有主体)还会告诉 Rust 从 network.rs 或 network/mod.rs 加载内容。
真实项目正是通过这种方式将代码拆分到多个文件中,同时保持一棵模块树。
隐私边界
模块构成隐私边界。子模块可以看到祖先模块的私有项目,但父模块无法访问子模块的私有项目。
这种封装可以隐藏内部细节。
mod bank {
fn secret() -> i32 { 42 }
pub fn reveal() -> i32 { secret() }
}
fn main() {
println!("{}", bank::reveal());
}组织真实项目
使用模块来反映您的领域,例如 auth、db 和 handlers。让每个模块各司其职,只公开少量接口,其余内容保持隐藏。
清晰的模块边界可以让大型代码库更易于浏览。
快速检查
测试您对模块的了解。
回顾
您已经学会使用模块组织代码:
mod name { ... }声明一个内联模块- 项目默认是私有的;使用
pub将其公开 - 使用
::路径遍历模块树 super、self和mod name;用于导航和拆分模块
常见问题解答
「模块与 mod」课时是免费的吗?
是的 — 「模块与 mod」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn Rust Coding 课程的其余内容,请升级到 CoddyKit PRO。 Learn Rust Coding 课程共包含 4 节课。
「模块与 mod」这节课中我会学到什么?
组织代码 你通过在浏览器中直接运行的动手代码来练习 Learn Rust Coding,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn Rust Coding 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn Rust Coding 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「模块与 mod」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn Rust Coding 课中编写并运行代码吗?
能。每节 Learn Rust Coding 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。