update "Starting Relative Paths with super"

This commit is contained in:
wencan 2023-06-05 16:51:59 +08:00
parent 6c2c796e1f
commit 0166114c2c

View File

@ -98,9 +98,9 @@ Rust 选择以这种方式来实现模块系统功能,因此默认隐藏内部
> 模块树应该定义在 *src/lib.rs* 中。这样通过以包名开头的路径,公有项就可以在二进制 crate 中使用。二进制 crate 就完全变成了同其它 外部 crate 一样的库 crate 的用户:它只能使用公有 API。这有助于你设计一个好的 API你不仅仅是作者也是用户 > 模块树应该定义在 *src/lib.rs* 中。这样通过以包名开头的路径,公有项就可以在二进制 crate 中使用。二进制 crate 就完全变成了同其它 外部 crate 一样的库 crate 的用户:它只能使用公有 API。这有助于你设计一个好的 API你不仅仅是作者也是用户
> 在[第十二章][ch12]我们会通过一个同时包含二进制 crate 和库 crate 的命令行程序来展示这些包组织上的实践。 > 在[第十二章][ch12]我们会通过一个同时包含二进制 crate 和库 crate 的命令行程序来展示这些包组织上的实践。
### 使用 `super`始的相对路径 ### `super`始的相对路径
我们还可以使用 `super` 而不是当前模块或者 crate 根来开头来构建从父模块开始的相对路径。这么做类似于文件系统中以 `..` 开头的语法。使用 `super` 允许我们引用已知的父模块中的项,当模块与父模块关联的很紧密的时候,如果某天可能需要父模块要移动到模块树的其它位置,这使得重新组织模块树变得更容易 我们可以通过在路径的开头使用 `super` ,从父模块开始构建相对路径,而不是从当前模块或者 crate 根开始。这类似以 `..` 语法开始一个文件系统路径。使用 `super` 允许我们引用父模块中的已知项,这使得重新组织模块树变得更容易 —— 当模块与父模块关联的很紧密,但某天父模块可能要移动到模块树的其它位置
考虑一下示例 7-8 中的代码,它模拟了厨师更正了一个错误订单,并亲自将其提供给客户的情况。`back_of_house` 模块中的定义的 `fix_incorrect_order` 函数通过指定的 `super` 起始的 `serve_order` 路径,来调用父模块中的 `deliver_order` 函数: 考虑一下示例 7-8 中的代码,它模拟了厨师更正了一个错误订单,并亲自将其提供给客户的情况。`back_of_house` 模块中的定义的 `fix_incorrect_order` 函数通过指定的 `super` 起始的 `serve_order` 路径,来调用父模块中的 `deliver_order` 函数: