diff --git a/book/contents/basic/match-pattern/match-if-let.md b/book/contents/basic/match-pattern/match-if-let.md index 6e8f1afb..d5e0c111 100644 --- a/book/contents/basic/match-pattern/match-if-let.md +++ b/book/contents/basic/match-pattern/match-if-let.md @@ -225,7 +225,7 @@ error[E0004]: non-exhaustive patterns: `West` not covered // 非穷尽匹配,` 首先,不禁想感叹,`Rust`的编译器真**强大,忍不住爆粗口了,sorry,如果你以后进一步深入使用Rust也会像我这样感叹的。 -其次,Rust知道`match`中没有覆盖的具体分支,知道哪些模式没有被覆盖。这种设计的初衷是为了保证我们能处理所有的情况,特别是那种会造成十亿美金的空值问题(不太读得懂)。 +其次,Rust知道`match`中没有覆盖的具体分支,知道哪些模式没有被覆盖。这种设计的初衷是为了保证我们能处理所有的情况,Rust编译器清晰地知道有哪些分支没有被覆盖。 #### `_` 通配符 @@ -287,7 +287,7 @@ fn main() { v.iter().filter(|x| x == MyEnum::Foo); ``` -但是,实际上这行代码会报错,因为`x`的类型是`&&MyEnum`,无法跟类型`MyEnum`通过`==`进行比较(这里不太懂想表达什么,编译器跑了一下报了这个错误)。好在,你可以使用`match`来完成,但是会导致代码更为啰嗦,是否有更简洁的方式?答案是使用`matches!`: +但是,实际上这行代码会报错,因为你无法将`x`直接跟一个枚举成员进行比较。好在,你可以使用`match`来完成,但是会导致代码更为啰嗦,是否有更简洁的方式?答案是使用`matches!`: ```rust v.iter().filter(|x| matches!(x, MyEnum::Foo)); ```