teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

update

2019/02/09 15:30

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > v3のように参照を外したいのですがやり方がわかりません。
2
2
 
3
- 下記のような処理を行いたいのでしょうか?
3
+ 下記のような処理を行いたいのでしょうか?(このケースでは`v4`==`None`のためpanicしてしまいますね)
4
4
 
5
5
  ```rust
6
6
  let v4a : i32;
@@ -10,4 +10,13 @@
10
10
  }
11
11
  v.push(45);
12
12
  println!("opt2 {:?}", v4a);
13
+ ```
14
+
15
+ ----
16
+ 追記:明示的に`Some`/`None`で分岐するコードでも良いですし、下記の通り[`Option::map`](https://doc.rust-lang.org/std/option/enum.Option.html#method.map)関数を使うともっとシンプルに書けます。
17
+
18
+ ```rust
19
+ let v4: Option<i32> = v.get(20).map(|x| *x);
20
+ v.push(45);
21
+ println!("opt2 {:?}", v4);
13
22
  ```