|
|
|
@ -13,8 +13,8 @@
|
|
|
|
|
这里我们提供一个简单的参考,用来解释模块、路径、`use`关键词和`pub`关键词如何在编译器中工作,和大部分开发者如何组织他们的代码。我们将在这个章节中对每条规则的例子一一列举,但这是一个用来参考的好地方用于表达模块是如何工作的。
|
|
|
|
|
|
|
|
|
|
- **从crate根节点开始**: 当编译一个crate, 编译器首先在crate根文件(通常,对于一个库crate而言是*src/lib.rs*,对于一个二进制crate而言是*src/main.rs*)中寻找需要被编译的代码。
|
|
|
|
|
- **声明模块**: 在crate根文件中,你可以声明一个新模块;比如,你用过`mod garden`声明了一个叫做`garden`的模块。编译器会在下列路径中寻找模块代码:
|
|
|
|
|
- 内联, 在大括号中,当`mod garden`后方不是一个分号而是一个大括号
|
|
|
|
|
- **声明模块**: 在crate根文件中,你可以声明一个新模块;比如,你用`mod garden`声明了一个叫做`garden`的模块。编译器会在下列路径中寻找模块代码:
|
|
|
|
|
- 内联,在大括号中,当`mod garden`后方不是一个分号而是一个大括号
|
|
|
|
|
- 在文件 *src/garden.rs*
|
|
|
|
|
- 在文件 *src/garden/mod.rs*
|
|
|
|
|
- **声明子模块**: 在除了crate根节点以外的其他文件中,你可以定义子模块。比如,你可能在*src/garden.rs*中定义了`mod vegetables;`。编译器会在以父模块命名的目录中寻找子模块代码:
|
|
|
|
|