Merge pull request #487 from AllanDowney/patch-1

Update appendix
pull/491/head
Sunface 3 years ago committed by GitHub
commit 361b3847d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -246,11 +246,11 @@
- [A-关键字](appendix/keywords.md)
- [B-运算符与符号](appendix/operators.md)
- [C-表达式](appendix/expressions.md)
- [D-派生特征derive](appendix/derive.md)
- [E-prelude模块 todo](appendix/prelude.md)
- [D-派生特征 trait](appendix/derive.md)
- [E-prelude 模块 todo](appendix/prelude.md)
<!-- - [F-难点索引](appendix/difficulties.md) -->
- [F-Rust版本说明](appendix/rust-version.md)
- [G-Rust更新版本列表](appendix/rust-versions/intro.md)
- [F-Rust 版本说明](appendix/rust-version.md)
- [G-Rust 更新版本列表](appendix/rust-versions/intro.md)
- [1.58](appendix/rust-versions/1.58.md)
- [1.59](appendix/rust-versions/1.59.md)

@ -1,4 +1,4 @@
## 附录 D派生特征 derive
## 附录 D可派生的 trait
在本书的各个部分中,我们讨论了可应用于结构体和枚举定义的 `derive` 属性。被 `derive` 标记的对象会自动实现对应的默认特征代码,继承相应的功能。
@ -18,7 +18,7 @@
本附录所提供的可派生特征列表其实并不全面:库可以为其内部的特征实现 `derive` ,因此除了本文列出的标准库 `derive` 之外,还有很多很多其它库的 `derive` 。实现 `derive` 涉及到过程宏的应用,这在[宏章节](../advance/macro.md)中有介绍。
### 用于程序员Debug输出的 `Debug`
### 用于开发者输出的 `Debug`
`Debug` 特征可以让指定对象输出调试格式的字符串,通过在 `{}` 占位符中增加 `:?` 表明,例如`println!("show you some debug info: {:?}", MyObject);`.
@ -26,7 +26,7 @@
例如,在使用 `assert_eq!` 宏时, `Debug` 特征是必须的。如果断言失败,这个宏就把给定实例的值打印出来,这样程序员就能看到两个实例为什么不相等。
### 等比较的 `PartialEq``Eq`
### 等比较的 `PartialEq``Eq`
`PartialEq` 特征可以比较一个类型的实例以检查是否相等,并开启了 `==``!=` 运算符的功能。
@ -38,7 +38,7 @@
例如,对于一个 `HashMap<K, V>` 中的 key 来说, `Eq` 是必须的,这样 `HashMap<K, V>` 就可以知道两个 key 是否一样。
### `PartialOrd``Ord` 用于次序比较
### 次序比较的 `PartialOrd``Ord`
`PartialOrd` 特征可以让一个类型的多个实例实现排序功能。实现了 `PartialOrd` 的类型可以使用 `<``>`、`<=` 和 `>=` 操作符。一个类型想要实现 `PartialOrd` 的前提是该类型已经实现了 `PartialEq`
@ -52,7 +52,7 @@
例如,当在 `BTreeSet<T>`(一种基于有序值存储数据的数据结构)上存值时, `Ord` 是必须的。
### `Clone``Copy` 用于值复制
### 复制值的 `Clone``Copy`
`Clone` 特征用于创建一个值的深拷贝deep copy复制过程可能包含代码的执行以及堆上数据的复制。查阅 [“通过Clone来进行深拷贝”](../core/ownership.md#通过Clone来进行深拷贝)获取有关 `Clone` 的更多信息。
@ -68,13 +68,13 @@
总之, `Copy` 拥有更好的性能,当浅拷贝足够的时候,就不要使用 `Clone` ,不然会导致你的代码运行更慢,对于[性能优化](../performance/intro.md)来说,一个很大的方面就是减少热点路径深拷贝的发生。
### `Hash` 用于实现值映射内存存储
### 固定大小的值映射的 `Hash`
`Hash` 特征允许你使用 `hash` 函数把一个任意大小的实例映射到一个固定大小的值上。派生 `Hash` 实现了 `hash` 方法,对某个类型进行 `hash` 调用,其实就是对该类型下每个字段单独进行 `hash` 调用,然后把结果进行汇总,这意味着该类型下的所有的字段也必须实现了 `Hash`,这样才能够派生 `Hash`
例如,在 `HashMap<K, V>` 上存储数据,存放 key 的时候, `Hash` 是必须的。
### `Default` 用于获取默认值
### 默认值的 `Default`
`Default` 特征会帮你创建一个类型的默认值。 派生 `Default` 意味着自动实现了 `default` 函数。 `default` 函数的派生实现调用了类型每部分的 `default` 函数,这意味着类型中所有的字段也必须实现了 `Default`,这样才能够派生 `Default`

@ -1,4 +1,4 @@
# 附录 GRust版本发布
# 附录 FRust 版本发布
## Rust 版本说明
早在第一章,我们见过 `cargo new`*Cargo.toml* 中增加了一些有关 `edition` 的元数据。本附录将解释其意义!

@ -1,2 +1,2 @@
# 附录 HRust 更新版本列表
# 附录 GRust 更新版本列表
本目录包含了 Rust 历次版本更新的重要内容解读,需要注意,每个版本实际更新的内容要比这里记录的更多,全部内容请访问每节开头的官方链接查看。

Loading…
Cancel
Save