Update Ch21

This commit is contained in:
Peng Hailin, 2023-04-08 21:59:23 +08:00
parent b7936728ff
commit a8d271968b
2 changed files with 11 additions and 1 deletions

View File

@ -1313,7 +1313,7 @@ fn returns_closure() -> Box<dyn Fn(i32) -> i32> {
接下来,咱们就要看看宏了!
## 关于宏
## 关于宏 <a id="macros"></a>
**Macros**

View File

@ -326,4 +326,14 @@ fn main() {
若咱们想要不同于由 `derive` 属性所提供的行为,请参考 [标准库文档](https://doc.rust-lang.org/std/index.html),了解如何亲自实现各个特质的详细信息。
这里列出的这些特质,只是一些由标准库所提供的,可使用 `derive` 实现于咱们类型上的那些。定义在标准库中别的一些特质,则没有什么合理的默认行为,因此是否要以对于咱们正尝试完成的东西有意义的方式,实现他们就取决于咱们自己了。
不能派生的一个特质示例便是 `Display`其为终端用户处理格式化。咱们应始终要考虑将某个类型显示给用户的恰当方式。终端用户应被允许看到该类型的哪些部分他们会发现哪些部分是相关的数据的何种形式才是与他们最为密切相关的Rust 编译器并无这种见解,因此他就无法为咱们提供到恰当的默认行为。
这个附录中所提供到的派生特质清单并不详尽:库可以为他们自己的特质实现 `derive`,从而领导咱们可使用 `derive` 的特质清单为真正开放的。实现 `derive` 设计到使用程序性宏,这在第 19 张的 [“宏”](#macros) 小节讲到过。
### 输出给编程者的 `Debug`
**`Debug` for Programmer Output**