Update Ch14

This commit is contained in:
Unisko PENG 2023-04-23 11:42:13 +08:00
parent 5ce6d1d7cf
commit dfa9b642a8
2 changed files with 9 additions and 4 deletions

View File

@ -205,15 +205,15 @@ error: doctest failed, to rerun pass `--doc`
程序项目里的文档注释用于对描述代码箱及模组尤其有用。使用他们来解释容器the container的整体目标有助于咱们的用户们理解代码箱的组织结构。
### 使用 `pub use` 导出好用的公开 API
### 使用 `pub use` 导出便利的公开 API
**Exporting a Convinient Public API with `pub use`**
发布某个代码箱时,其公开 API 结构是主要的考量。用到咱们代码箱的人们,相比咱们自己,对代码箱结构的没有那么熟悉,进而在咱们的代码箱有着大型模组层次结构时,就会难于找到他们打算使用的部分。
咱们发布代码箱时,公开 API 的结构是主要的考量。相比与咱们,使用咱们代码箱的人们对代码箱结构的没有那么熟悉,并在咱们的代码箱有着大型模组层次结构时,难于找到他们打算使用的部分。
在第 7 章中,就曾讲到过怎样使用 `pub` 关键字,把一些程序项目构造为公开,以及使用 `use` 关键字,把一些程序项目带入到某个作用域。尽管如此,在开发某个代码箱过程中,对咱们有意义的组织结构(模组树),对于咱们的用户,就可能不那么便利。咱们可能打算把代码箱结构,组织为包含多个级别的层次,但随后打算使用已被定义在该层次结构深处某个类型的人,就可能在查明那个类型是否存在上,遇到麻烦。他们可能还会对必须敲入 `use cargo_features_demo::some_module::another_module::UsefulType;`,而非敲入 `use cargo_features_demo::UsefulType;` 而感到恼火。
在第 7 章中,咱们曾讲到过怎样使用 `pub` 关键字把一些程序项目构造为公开,与怎样使用 `use` 关键字,把程序项目带入到作用域。但是,咱们在开发某个代码箱时,对咱们有意义的组织结构(模组树),对于咱们的用户则可能不那么便利。咱们会打算把代码箱结构组织为包含多个级别的层次,但随后某个想要使用定义在层次结构深处类型的人,就可能在找出那个类型是否存在上遇到麻烦。他们可能还会对必须敲入 `use cargo_features_demo::some_module::another_module::UsefulType;`,而非敲入 `use cargo_features_demo::UsefulType;` 而感到恼火。
可喜的是,在代码箱组织结构 *不* 便于其他人在别的库中使用时,咱们并不必须重新调整代码箱的内部组织:相反,咱们可通过使用 `pub use`,重新导出程序项目,而构造出一种不同于咱们私有组织结构的公开组织结构。重新导出re-export会取位于某处的一个公开程序项目在另一处将其构造为公开,就跟这个项目是在另一处被定义过一样。
可喜的是,在代码箱组织结构 *不* 便于其他人在另外的库中使用时,咱们不必重新调整代码箱的内部组织:相反,咱们可通过使用 `pub use`,重新导出程序项目,而构造出一种不同于咱们私有组织结构的公开组织结构。重新导出re-export会取一处的公开程序项目在另一处将其构造为公开,就跟这个项目是在另一处被定义过一样。
比如,假设这里构造了用于对一些美术概念建模的一个名为 `art` 的库。这个库里头有两个模组:包含了两个分别名为 `PrimaryColor``SeccondaryColor` 枚举的 `kinds` 模组与包含了一个名为 `mix` 函数的 `utils` 模组,如下清单 14-3 中所示:

View File

@ -791,6 +791,11 @@ $ rustup component add llvm-tools-preview
Documentation comment, 将产生出 HTML 的注释。
- 重导出程序项目
Re-export, 使用 `pub use` 重新导出程序项目。
- 单态化
所谓 *单态化monomorphization*,是指即通过把在编译后用到的具体类型填入到泛型位置,而将通用代码转换为具体代码的过程。参考 [使用泛型代码的性能问题](Ch10_Generic_Types_Traits_and_Lifetimes.md#使用泛型参数代码的性能问题)。