From cb40f9f8d7021cc149ab790dba6c49661545ba03 Mon Sep 17 00:00:00 2001 From: sunface Date: Thu, 13 Jan 2022 08:42:47 +0800 Subject: [PATCH] update match --- book/contents/advance/concurrency-with-threads/sync2.md | 1 + book/contents/basic/match-pattern/match-if-let.md | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/book/contents/advance/concurrency-with-threads/sync2.md b/book/contents/advance/concurrency-with-threads/sync2.md index cdfff865..a9cc7c37 100644 --- a/book/contents/advance/concurrency-with-threads/sync2.md +++ b/book/contents/advance/concurrency-with-threads/sync2.md @@ -159,6 +159,7 @@ X = 2; } #### 限定内存顺序的5个规则 在理解了内存顺序可能存在的改变后,你就可以明白为什么Rust提供了`Ordering::Relaxed`用于限定内存顺序了,事实上,该枚举有5个成员: + - **Relaxed**, 这是最宽松的规则,它对编译器和CPU不做任何限制,可以乱序 - **Release**,设定内存屏障(Memory barrier),指定屏障之前的数据不能被重新排序 - **Acquire**, 设定内存屏障,指定屏障之后的数据不能被重新排序,往往和`Release`在不同线程中联合使用 diff --git a/book/contents/basic/match-pattern/match-if-let.md b/book/contents/basic/match-pattern/match-if-let.md index d5e0c111..7a4ca212 100644 --- a/book/contents/basic/match-pattern/match-if-let.md +++ b/book/contents/basic/match-pattern/match-if-let.md @@ -223,9 +223,7 @@ error[E0004]: non-exhaustive patterns: `West` not covered // 非穷尽匹配,` = note: the matched value is of type `Direction` ``` -首先,不禁想感叹,`Rust`的编译器真**强大,忍不住爆粗口了,sorry,如果你以后进一步深入使用Rust也会像我这样感叹的。 - -其次,Rust知道`match`中没有覆盖的具体分支,知道哪些模式没有被覆盖。这种设计的初衷是为了保证我们能处理所有的情况,Rust编译器清晰地知道有哪些分支没有被覆盖。 +不禁想感叹,`Rust`的编译器真**强大,忍不住爆粗口了,sorry,如果你以后进一步深入使用Rust也会像我这样感叹的。Rust编译器清晰地知道`match`中有哪些分支没有被覆盖, 这种行为能强制我们处理所有的可能性,有效避免传说中价值十亿美金的`null`陷阱。 #### `_` 通配符