update match

pull/190/head
sunface 3 years ago
parent 2657401cf8
commit cb40f9f8d7

@ -159,6 +159,7 @@ X = 2; }
#### 限定内存顺序的5个规则 #### 限定内存顺序的5个规则
在理解了内存顺序可能存在的改变后你就可以明白为什么Rust提供了`Ordering::Relaxed`用于限定内存顺序了事实上该枚举有5个成员: 在理解了内存顺序可能存在的改变后你就可以明白为什么Rust提供了`Ordering::Relaxed`用于限定内存顺序了事实上该枚举有5个成员:
- **Relaxed** 这是最宽松的规则它对编译器和CPU不做任何限制可以乱序 - **Relaxed** 这是最宽松的规则它对编译器和CPU不做任何限制可以乱序
- **Release**,设定内存屏障(Memory barrier),指定屏障之前的数据不能被重新排序 - **Release**,设定内存屏障(Memory barrier),指定屏障之前的数据不能被重新排序
- **Acquire**, 设定内存屏障,指定屏障之后的数据不能被重新排序,往往和`Release`在不同线程中联合使用 - **Acquire**, 设定内存屏障,指定屏障之后的数据不能被重新排序,往往和`Release`在不同线程中联合使用

@ -223,9 +223,7 @@ error[E0004]: non-exhaustive patterns: `West` not covered // 非穷尽匹配,`
= note: the matched value is of type `Direction` = note: the matched value is of type `Direction`
``` ```
首先,不禁想感叹,`Rust`的编译器真**强大忍不住爆粗口了sorry如果你以后进一步深入使用Rust也会像我这样感叹的。 不禁想感叹,`Rust`的编译器真**强大忍不住爆粗口了sorry如果你以后进一步深入使用Rust也会像我这样感叹的。Rust编译器清晰地知道`match`中有哪些分支没有被覆盖, 这种行为能强制我们处理所有的可能性,有效避免传说中价值十亿美金的`null`陷阱。
其次Rust知道`match`中没有覆盖的具体分支知道哪些模式没有被覆盖。这种设计的初衷是为了保证我们能处理所有的情况Rust编译器清晰地知道有哪些分支没有被覆盖。
#### `_` 通配符 #### `_` 通配符

Loading…
Cancel
Save