Add copied and unwrap_or method to directly get a score value

pull/1149/head
sunface 2 years ago
parent 0726f4c85e
commit 3973ba6719

@ -91,6 +91,7 @@ error[E0282]: type annotations needed // 需要类型标注
| ^^^^^^^^^ consider giving `teams_map` a type // 给予 `teams_map` 一个具体的类型
```
## 所有权转移
`HashMap` 的所有权规则与其它 Rust 类型没有区别:
@ -186,6 +187,15 @@ let score: Option<&i32> = scores.get(&team_name);
- `get` 方法返回一个 `Option<&i32>` 类型:当查询不到时,会返回一个 `None`,查询到时返回 `Some(&i32)`
- `&i32` 是对 `HashMap` 中值的借用,如果不使用借用,可能会发生所有权的转移
还可以继续拓展下,上面的代码中,如果我们想直接获得值类型的 `score` 该怎么办,答案简约但不简单:
```rust
let score: i32 = scores.get(&team_name).copied().unwrap_or(0);
```
这里留给大家一个小作业: 去官方文档中查询下 `Option``copied` 方法和 `unwrap_or` 方法的含义及该如何使用。
还可以通过循环的方式依次遍历 `KV` 对:
```rust

Loading…
Cancel
Save