Merge pull request #717 from AllanDowney/index

update(index-list): add match and if let
pull/737/head
Sunface 3 years ago committed by GitHub
commit d4e796ce38
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -18,18 +18,18 @@
## Sym ## Sym
| 名称 | 关键字 | 简介 | | 名称 | 关键字 | 简介 |
| ----------------------- | -------------- | ------------------------------------------------ | | ----------------------- | -------------- | ------------------------------------------------------------------------------------ |
| [?] | 错误传播 | 用于简化错误传播 | | [?] | 错误传播 | 用于简化错误传播 |
| [()] | 单元类型 | 单元类型,无返回值 | | [()] | 单元类型 | 单元类型,无返回值 |
| `!` : [1 函数] [2 类型] | 永不返回 | 永不返回 | | `!` : [1 函数] [2 类型] | 永不返回 | 永不返回 |
| [&] | 引用 | 常规引用是一个指针类型,指向了对象存储的内存地址 | | [&] | 引用 | 常规引用是一个指针类型,指向了对象存储的内存地址 |
| [\*] | 解引用 | 解出引用所指向的值 | | [\*] | 解引用 | 解出引用所指向的值 |
| [@] | 变量绑定 | 为一个字段绑定另外一个变量 | | [@] | 变量绑定 | 为一个字段绑定另外一个变量 |
| `_` | | 忽略该值或者类型 | | `_` : [2 模式匹配] | 忽略 | 1. 忽略该值或者类型,否则编译器会给你一个 `变量未使用的` 的警告<br>2. 模式匹配通配符 |
| ['a: 'b] | 生命周期约束 | 用来说明两个生命周期的长短 | | ['a: 'b] | 生命周期约束 | 用来说明两个生命周期的长短 |
| [{:?}] {:#?} | 打印结构体信息 | 使用 `#[derive(Debug)]` 派生实现 `Debug` 特征 | | [{:?}] {:#?} | 打印结构体信息 | 使用 `#[derive(Debug)]` 派生实现 `Debug` 特征 |
| A | | AIntroduction | | A | | AIntroduction |
[?]: https://course.rs/basic/result-error/result.html#传播界的大明星- [?]: https://course.rs/basic/result-error/result.html#传播界的大明星-
[()]: https://course.rs/basic/base-type/function.html#无返回值 [()]: https://course.rs/basic/base-type/function.html#无返回值
@ -40,6 +40,7 @@
[@]: https://course.rs/basic/match-pattern/all-patterns.html#绑定 [@]: https://course.rs/basic/match-pattern/all-patterns.html#绑定
['a: 'b]: https://course.rs/advance/lifetime/advance.html#生命周期约束-hrtb ['a: 'b]: https://course.rs/advance/lifetime/advance.html#生命周期约束-hrtb
[{:?}]: https://course.rs/basic/compound-type/struct.html?search=#使用-derivedebug-来打印结构体的信息 [{:?}]: https://course.rs/basic/compound-type/struct.html?search=#使用-derivedebug-来打印结构体的信息
[2 模式匹配]: https://course.rs/basic/match-pattern/match-if-let.html#_-通配符
[back](#head) [back](#head)
@ -58,16 +59,18 @@
## B ## B
| 名称 | 关键字 | 简介 | | 名称 | 关键字 | 简介 |
| ------------ | --------- | -------------------------------------- | | ------------ | --------- | ------------------------------------------------------------------------------ |
| [变量遮蔽] | shadowing | 允许声明相同的变量名,后者会遮蔽掉前者 | | [变量遮蔽] | shadowing | 允许声明相同的变量名,后者会遮蔽掉前者 |
| [变量作用域] | 所有权 | 作用域是一个变量在程序中有效的范围 | | [变量覆盖] | 模式匹配 | 无论是是 `match` 还是 `if let`,他们都可以在模式匹配时覆盖掉老的值,绑定新的值 |
| [表达式] | | 进行求值,结尾无 `;`,有返回值 | | [变量作用域] | 所有权 | 作用域是一个变量在程序中有效的范围 |
| [bool 布尔] | 布尔类型 | `true` `false`,占用 1 字节 | | [表达式] | | 进行求值,结尾无 `;`,有返回值 |
| [break] | 循环控制 | 直接跳出当前整个循环 | | [bool 布尔] | 布尔类型 | `true` `false`,占用 1 字节 |
| B | KWB | BIntroduction | | [break] | 循环控制 | 直接跳出当前整个循环 |
| B | KWB | BIntroduction |
[变量遮蔽]: https://course.rs/basic/variable.html#变量遮蔽shadowing [变量遮蔽]: https://course.rs/basic/variable.html#变量遮蔽shadowing
[变量覆盖]: https://course.rs/basic/match-pattern/match-if-let.html#变量覆盖
[变量作用域]: https://course.rs/basic/ownership/ownership.html#变量作用域 [变量作用域]: https://course.rs/basic/ownership/ownership.html#变量作用域
[bool 布尔]: https://course.rs/basic/base-type/char-bool.html#布尔bool [bool 布尔]: https://course.rs/basic/base-type/char-bool.html#布尔bool
[表达式]: https://course.rs/basic/base-type/statement-expression.html#表达式 [表达式]: https://course.rs/basic/base-type/statement-expression.html#表达式
@ -147,14 +150,16 @@
## I ## I
| 名称 | 关键字 | 简介 | | 名称 | 关键字 | 简介 |
| --------- | -------- | -------------------------- | | ------------- | -------- | --------------------------------------------------------------------- |
| [if else] | 流程控制 | 根据条件执行不同的代码分支 | | [if else] | 流程控制 | 根据条件执行不同的代码分支 |
| [else if] | 流程控制 | 处理多重条件 | | [else if] | 流程控制 | 处理多重条件 |
| I | KWI | IIntroduction | | [if let 匹配] | 模式匹配 | 当你只要匹配一个条件,且忽略其他条件时就用 `if let`,否则都用 `match` |
| I | KWI | IIntroduction |
[if else]: https://course.rs/basic/flow-control.html#使用-if-来做分支控制 [if else]: https://course.rs/basic/flow-control.html#使用-if-来做分支控制
[else if]: https://course.rs/basic/flow-control.html#使用-else-if-来处理多重条件 [else if]: https://course.rs/basic/flow-control.html#使用-else-if-来处理多重条件
[if let 匹配]: https://course.rs/basic/match-pattern/match-if-let.html#if-let-匹配
[back](#head) [back](#head)
@ -192,11 +197,17 @@
## M ## M
| 名称 | 关键字 | 简介 | | 名称 | 关键字 | 简介 |
| ----------- | ---------- | ----------------------------------------------------- | | ------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [move 移动] | 转移所有权 | `let s2 = s1;`<br>`s1` 所有权转移给了 `s2``s1` 失效 | | [模式绑定] | 模式匹配 | 从模式中取出绑定的值 |
| M | KWM | MIntroduction | | [match 匹配] | 模式匹配 | `match` 的匹配必须要穷举出所有可能,因此这里用 `_ ` 来代表未列出的所有可能性<br>`match` 的每一个分支都必须是一个表达式,且所有分支的表达式最终返回值的类型必须相同 |
| [matches! 宏] | 模式匹配 | 将一个表达式跟模式进行匹配,然后返回匹配的结果 `true``false` |
| [move 移动] | 转移所有权 | `let s2 = s1;`<br>`s1` 所有权转移给了 `s2``s1` 失效 |
| M | KWM | MIntroduction |
[模式绑定]: https://course.rs/basic/match-pattern/match-if-let.html#模式绑定
[match 匹配]: https://course.rs/basic/match-pattern/match-if-let.html#match-匹配
[matches! 宏]: https://course.rs/basic/match-pattern/match-if-let.html#matches宏
[move 移动]: https://course.rs/basic/ownership/ownership.html#转移所有权 [move 移动]: https://course.rs/basic/ownership/ownership.html#转移所有权
[back](#head) [back](#head)
@ -211,12 +222,14 @@
## O ## O
| 名称 | 关键字 | 简介 | | 名称 | 关键字 | 简介 |
| -------- | ----------- | ------------- | | ------------- | ----------- | --------------------------------------------------------------- |
| [Option] | Option 枚举 | 用于处理空值 | | [Option] | Option 枚举 | 用于处理空值,**一个变量要么有值:`Some(T)`, 要么为空:`None`** |
| O | KWO | OIntroduction | | [Option 解构] | 模式匹配 | 可以通过 `match` 来实现 |
| O | KWO | OIntroduction |
[option]: https://course.rs/basic/compound-type/enum.html#option-枚举用于处理空值 [option]: https://course.rs/basic/compound-type/enum.html#option-枚举用于处理空值
[option 解构]: https://course.rs/basic/match-pattern/option.html#匹配-optiont
[back](#head) [back](#head)

Loading…
Cancel
Save