Updated 'src/packages_crates_and_modules/defining_modules.md'.

This commit is contained in:
Peng Hailin, 2024-01-01 19:33:41 +08:00
parent 47ef6011a5
commit ccbb7d5823

View File

@ -94,11 +94,12 @@ pub struct Asparagus {}
*模组modules* 让我们可以把代码组织在代码箱中,以提高可读性并方便重复使用。模组还允许我们控制程序项目的私密性,因为某个模组内的代码默认为私有。私有项目是一些内部的实现细节,不供外部使用。我们可以选择将模组及其中的项目公开,这样就可以让外部代码使用和依赖他们。
举例来说,这里要编写一个提供饭馆功能的库代码箱。那么就会定义出一些函数签名,不过要将这些函数的函数体留作空白,而非在代码中具体实现一个饭馆出来,以专注于代码组织
例如,我们来编写一个提供餐厅功能的库代码箱。我们将定义函数的签名,但函数体留空,以专注于代码的组织,而不是实现餐厅的实现
在餐饮行业,饭馆的一些部分被称作 *前台front of house*,而其余部分则被称作 *后厨back of house*。前台是顾客们所在的地方;这是饭馆领台给食客安排位置、服务员拿到菜单和买单,以及调酒师制作饮品的地方。而后厨则是大厨和厨师们在厨房做菜、洗碗工做清洁工作,以及经理们完成行政工作的地方。
在餐饮业,餐厅的一些部分被称为 *前厅front of house*,其他部分被称为 *后厨back of house*。前厅是顾客所在的地方;包括餐厅领台为顾客安排座位、服务员接受点单和付款,以及调酒师调制饮料的地方。后厨是厨师和厨工在厨房工作、洗碗工进行清洁和经理进行行政工作的地方。
为了以这种方式架构我们的代码箱,我们可以将其函数,组织成一些嵌套的模组。请运行 `cargo new restaurant --lib`,创建一个名为 `restaurant` 的新库;然后在 `src/lib.rs` 中,输入下面清单 7-1 中的代码,定义一些模组和函数签名。下面是前台部分:
为了以此种方式架构起这里代码,那么就可以将其函数,组织进一些嵌套模组中。通过运行 `cargo new --lib restaurant` 命令,创建出一个新的、名为 `restaurant` 的库;然后把下面清单 7-1 中的代码,敲入到文件 `src/lib.rs` 里,而定义出一些模组与函数签名。下面是饭馆前台部分:
文件名:`src/lib.rs`
@ -120,9 +121,10 @@ mod front_of_house {
}
```
*清单 7-1包含着别的一些、又包含了一些函数的模组的一个 `front_of_house` 模组a `front_of_house` module containing other modules that then contain functions*
*清单 7-1包含着其他包含了函数模组的 `front_of_house` 模组*
这里使用跟着模组名字(此示例中,即 `front_of_house`)的关键字 `mod`定义的一个模组。随后就是位处一对花括号中的模组代码体the body of the module。在模组内部可以有其他模组如同此示例中的 `hosting``serving` 模组。模组还可以驻留一些别的项目诸如结构体、枚举、常量、特质traits以及 -- 如同在清单 7-1 中那样的 -- 一些函数等等。
我们使用后跟模组名字(本例中为 `front_of_house`)的 `mod` 关键字,定义某个模组。随后模组的主体,位于花括号内。在模组内部,我们可以放置其他模组,就像本例中 `hosting``serving` 模组。模组还可以包含其他项目的定义,如结构体、枚举、常量、特质,以及如同清单 7-1 中的函数。
经由模组的使用,就可以将有关联的一些定义,组织在一起,并以他们因何相关而取个名字。使用此代码的程序员们,就可以根据这些分组,而非通读全部的这些定义,来浏览代码,那么在找到他们想要使用的那些定义时,就会容易一些。而对于要往该代码增加新功能的那些程序员,就清楚在哪里放置代码,来保持程序组织有序。