This commit is contained in:
Aaran Xu 2022-01-30 14:19:00 +08:00
parent 94340e5873
commit c0f2a06338

View File

@ -136,10 +136,9 @@ Rust **确实**包含了打印出调试信息的功能,不过我们必须为
{{#include ../listings/ch05-using-structs-to-structure-related-data/no-listing-05-dbg-macro/output.txt}}
```
我们可以看到第一点输出来自 *src/main.rs* 第 10 行,我们正在调试表达式 `30 * scale`其结果值是60为整数实现的 `Debug` 格式化是只打印它们的值)。在 *src/main.rs* 第 14`dbg!` 调用输出 `&rect1` 的值,即 `Recangle` 结构。这个输出使用了更为易读的 `Debug` 格式。当你试图弄清楚你的代码在做什么时,`dbg!` 宏可能真的很有帮助!
我们可以看到第一点输出来自 *src/main.rs* 第 10 行,我们正在调试表达式 `30 * scale`其结果值是60为整数实现的 `Debug` 格式化是只打印它们的值)。在 *src/main.rs* 第 14 `dbg!` 调用输出 `&rect1` 的值,`Rectangle` 结构。这个输出使用了更为易读的 `Debug` 格式。当你试图弄清楚你的代码在做什么时,`dbg!` 宏可能真的很有帮助!
除了 `Debug` traitRust 还为我们提供了很多可以通过 `derive` 属性来使用的 trait他们可以为我们的自定义类型增加实用的行为。[附录 C][app-c]<!--
ignore --> 中列出了这些 trait 和行为。第十章会介绍如何通过自定义行为来实现这些 trait同时还有如何创建你自己的 trait。除了 `derive` 之外,还有很多属性;更多信息请参见 [《Rust 参考手册》][attributes] 的 Attributes 部分。
除了 `Debug` traitRust 还为我们提供了很多可以通过 `derive` 属性来使用的 trait他们可以为我们的自定义类型增加实用的行为。[附录 C][app-c]<!-- ignore --> 中列出了这些 trait 和行为。第十章会介绍如何通过自定义行为来实现这些 trait同时还有如何创建你自己的 trait。除了 `derive` 之外,还有很多属性;更多信息请参见 [《Rust 参考手册》][attributes] 的 Attributes 部分。
我们的 `area` 函数非常特殊,它只计算长方形的面积。如果这个行为与 `Rectangle` 结构体再结合得更紧密一些就更好了,因为它不能用于其他类型。现在让我们看看如何继续重构这些代码,来将 `area` 函数协调进 `Rectangle` 类型定义的 `area` **方法**中。