|
|
@ -241,7 +241,7 @@ error[E0004]: non-exhaustive patterns: `West` not covered // 非穷尽匹配,`
|
|
|
|
|
|
|
|
|
|
|
|
#### `_` 通配符
|
|
|
|
#### `_` 通配符
|
|
|
|
|
|
|
|
|
|
|
|
当我们不想在匹配的时候列出所有值的时候,可以使用 Rust 提供的一个特殊**模式**,例如,`u8` 可以拥有 0 到 255 的有效的值,但是我们只关心 `1、3、5 和 7` 这几个值,不想列出其它的 `0、2、4、6、8、9 一直到 255` 的值。那么, 我们不必一个一个列出所有值, 因为可以使用使用特殊的模式 `_` 替代:
|
|
|
|
当我们不想在匹配的时候列出所有值的时候,可以使用 Rust 提供的一个特殊**模式**,例如,`u8` 可以拥有 0 到 255 的有效的值,但是我们只关心 `1、3、5 和 7` 这几个值,不想列出其它的 `0、2、4、6、8、9 一直到 255` 的值。那么, 我们不必一个一个列出所有值, 因为可以使用特殊的模式 `_` 替代:
|
|
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
```rust
|
|
|
|
let some_u8_value = 0u8;
|
|
|
|
let some_u8_value = 0u8;
|
|
|
@ -323,7 +323,7 @@ assert!(matches!(bar, Some(x) if x > 2));
|
|
|
|
|
|
|
|
|
|
|
|
## 变量覆盖
|
|
|
|
## 变量覆盖
|
|
|
|
|
|
|
|
|
|
|
|
无论是是 `match` 还是 `if let`,他们都可以在模式匹配时覆盖掉老的值,绑定新的值:
|
|
|
|
无论是 `match` 还是 `if let`,他们都可以在模式匹配时覆盖掉老的值,绑定新的值:
|
|
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
```rust
|
|
|
|
fn main() {
|
|
|
|
fn main() {
|
|
|
|