mirror of
https://github.com/rust-lang-cn/book-cn.git
synced 2025-01-23 07:20:20 +08:00
Merge pull request #51 from YangFong/doc-style
docs: Reformat the document
This commit is contained in:
commit
eeda1611ff
@ -188,7 +188,7 @@
|
||||
| 符号 | 解释 |
|
||||
|---------|-------------|
|
||||
| `[...]` | 数组 |
|
||||
| `[expr; len]` | 复制了 `len`个 `expr`的数组 |
|
||||
| `[type; len]` | 包含 `len`个 `type` 类型的数组|
|
||||
| `[expr; len]` | 复制了 `len` 个 `expr` 的数组 |
|
||||
| `[type; len]` | 包含 `len` 个 `type` 类型的数组|
|
||||
| `expr[expr]` | 集合索引。 重载(`Index`, `IndexMut`) |
|
||||
| `expr[..]`, `expr[a..]`, `expr[..b]`, `expr[a..b]` | 集合索引,使用 `Range`,`RangeFrom`,`RangeTo` 或 `RangeFull` 作为索引来代替集合 slice |
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
在本附录中提供了标准库中所有可以使用 `derive` 的 trait 的参考。这些部分涉及到:
|
||||
|
||||
* 该 trait 将会派生什么样的操作符和方法
|
||||
* 由 `derive` 提供什么样的 trait 实现
|
||||
* 由什么来实现类型的 trait
|
||||
* 是否允许实现该 trait 的条件
|
||||
* 需要 trait 操作的例子
|
||||
- 该 trait 将会派生什么样的操作符和方法
|
||||
- 由 `derive` 提供什么样的 trait 实现
|
||||
- 由什么来实现类型的 trait
|
||||
- 是否允许实现该 trait 的条件
|
||||
- 需要 trait 操作的例子
|
||||
|
||||
如果你希望不同于 `derive` 属性所提供的行为,请查阅 [标准库文档](https://doc.rust-lang.org/std/index.html) 中每个 trait 的细节以了解如何手动实现它们。
|
||||
|
||||
@ -82,7 +82,7 @@
|
||||
|
||||
`Default::default` 函数通常结合结构体更新语法一起使用,这在第 5 章的 [“使用结构体更新语法从其他实例中创建实例”][creating-instances-from-other-instances-with-struct-update-syntax] 部分有讨论。可以自定义一个结构体的一小部分字段而剩余字段则使用 `..Default::default()` 设置为默认值。
|
||||
|
||||
例如,当你在 `Option<T>` 实例上使用 `unwrap_or_default` 方法时,`Default` trait是必须的。如果 `Option<T>` 是 `None`的话, `unwrap_or_default` 方法将返回存储在 `Option<T>` 中 `T` 类型的 `Default::default` 的结果。
|
||||
例如,当你在 `Option<T>` 实例上使用 `unwrap_or_default` 方法时,`Default` trait 是必须的。如果 `Option<T>` 是 `None` 的话, `unwrap_or_default` 方法将返回存储在 `Option<T>` 中 `T` 类型的 `Default::default` 的结果。
|
||||
|
||||
[creating-instances-from-other-instances-with-struct-update-syntax]:
|
||||
ch05-01-defining-structs.html#creating-instances-from-other-instances-with-struct-update-syntax
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
### 通过解引用运算符追踪指针的值
|
||||
|
||||
常规引用是一个指针类型,一种理解指针的方式是将其看成指向储存在其他某处值的箭头。在示例 15-6 中,创建了一个 `i32` 值的引用y,接着使用解引用运算符来解出y所引用的值:
|
||||
常规引用是一种指针类型,一种理解指针的方式是将其看成指向储存在其他某处值的箭头。在示例 15-6 中,创建了一个 `i32` 值的引用,接着使用解引用运算符解出所引用的值:
|
||||
|
||||
<span class="filename">文件名: src/main.rs</span>
|
||||
|
||||
@ -153,7 +153,7 @@ Rust 将 `*` 运算符替换为先调用 `deref` 方法再进行普通解引用
|
||||
|
||||
### 函数和方法的隐式解引用强制转换
|
||||
|
||||
**解引用强制转换**(_deref coercions_)是 Rust 在函数或方法传参上的一种便利。解引用强制转换只能工作在实现了Deref trait的类型上。解引用强制转换将一种类型(A)隐式转换为另外一种类型(B)的引用,因为A类型实现了Deref trait,并且其关联类型是B类型。比如,解引用强制转换可以将&String转换为&str,因为类型String实现了Deref trait并且其关联类型是str。代码如下:
|
||||
**解引用强制转换**(_deref coercions_)是 Rust 在函数或方法传参上的一种便利。解引用强制转换只能工作在实现了 Deref trait 的类型上。解引用强制转换将一种类型(A)隐式转换为另外一种类型(B)的引用,因为 A 类型实现了 Deref trait,并且其关联类型是 B 类型。比如,解引用强制转换可以将 &String 转换为 &str,因为类型 String 实现了 Deref trait 并且其关联类型是 str。代码如下:
|
||||
|
||||
```rust,ignore,does_not_compile
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
|
Loading…
Reference in New Issue
Block a user