Crate 与 Crate 根
项目结构
Crate 与 Crate 根 是 CoddyKit 上的免费 Learn Rust Coding 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn Rust Coding 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn Rust Coding 课程共包含 4 节课。
什么是包?
包是 Rust 编译器处理的最小单元。有两种类型:编译为可执行文件的二进制包,以及供其他代码依赖的库包。
二进制包与库包
二进制包包含main函数,并生成可以运行的程序。库包没有main函数,而是为其他包公开可复用的项目。
- 二进制根文件:
src/main.rs - 库根文件:
src/lib.rs
包根
包根是编译器开始处理的源文件。它位于模块树顶端,路径中的crate关键字就是指向它。
fn main() {
crate::greet();
}
fn greet() {
println!("hello from the crate root");
}Cargo 与软件包
软件包是由 Cargo 管理的一个或多个包,其信息记录在Cargo.toml中。一个软件包最多包含一个库包,但可以包含任意数量的二进制包。
Cargo 负责构建、测试和管理依赖项。
最小 Cargo.toml
清单文件声明软件包名称、版本和依赖项。Cargo 会读取它,以了解如何构建您的项目。
[package]— 名称、版本、版本 edition[dependencies]— 外部包
标准项目布局
Cargo 期待使用约定俗成的结构:
src/main.rs— 二进制包根文件src/lib.rs— 库包根文件src/bin/— 额外的二进制程序tests/— 集成测试
遵循这一约定即可实现零配置。
模块位于包根之下
包根可以声明模块,这些模块会组成模块树。您构建的所有内容都从这个根文件延伸出来。
mod utils {
pub fn shout(s: &str) -> String {
s.to_uppercase()
}
}
fn main() {
println!("{}", utils::shout("crate"));
}拆分到多个文件
当根文件使用分号声明mod utils;时,Cargo 会加载src/utils.rs。该文件的内容会成为对应模块的主体,从而在多个文件之间保持同一棵模块树。
从二进制程序使用库
在同时包含lib.rs和main.rs的软件包中,二进制程序通过软件包名称引用库。库会公开供二进制程序使用的pub项目。
这种拆分让逻辑保留在库中,而入口点保持简洁。
添加依赖项
运行cargo add rand,或编辑Cargo.toml中的[dependencies]。Cargo 会从 crates.io 下载该包,并使其可通过use使用。
Cargo 还会在Cargo.lock中锁定确切版本,以实现可复现的构建。
全局视角
从小到大依次是:模块 < 包 < 软件包。模块用于组织包;包根固定模块树;软件包和 Cargo 将这一切联系起来。
快速检查
测试您对项目结构的理解。
回顾
您已经学会项目结构:
- 包可以是二进制包或库包
- 包根(
main.rs或lib.rs)固定模块树 - 软件包用于组合包,其信息记录在
Cargo.toml中 - Cargo 管理布局、构建和依赖项
常见问题解答
「Crate 与 Crate 根」课时是免费的吗?
是的 — 「Crate 与 Crate 根」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn Rust Coding 课程的其余内容,请升级到 CoddyKit PRO。 Learn Rust Coding 课程共包含 4 节课。
「Crate 与 Crate 根」这节课中我会学到什么?
项目结构 你通过在浏览器中直接运行的动手代码来练习 Learn Rust Coding,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn Rust Coding 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn Rust Coding 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「Crate 与 Crate 根」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn Rust Coding 课中编写并运行代码吗?
能。每节 Learn Rust Coding 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。