0Pricing
Learn Rust Coding · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 模块与 mod
  2. pub 与可见性
  3. use 与路径
  4. Crate 与 Crate 根
← 返回 Learn Rust Coding