Skip to main content

C7 Rust 工程化: Package, Crate, Module

https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-crates-and-modules.html

本章主要介绍如何通过 Package, Crate, Module 层级的方式组织 Rust 工程代码.(对于复杂工程, Cargo 还提供 workspace 机制, 在 C14 会讲)

Rust 中的模块系统相关概念如下:

  • Package: Cargo 的一个功能, 用于协助开发者构建, 编译, 共享多个 Crate, 一个 package 中可以有多个 exec crate, 及一个 lib crate.
  • Crate: 对应生成一个 Library 或 Executable 的 Module 树.
  • Module: 用于管理 path.
  • Paths: 在 Module 系统中唯一标识一个 item 的名字. 成熟的做法是将 path 的 parent 通过 use 引入, 而不是该 path 的全称, 这样可以保证代码可读, 且在相同 Scope 中可以有效区分同名 path.
  • Scope: 代码可见性的范围, 即作用域.