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

質問編集履歴

2

参照を修正

2019/02/09 15:24

投稿

namuyan
namuyan

スコア76

title CHANGED
File without changes
body CHANGED
@@ -29,14 +29,13 @@
29
29
  ```rust
30
30
  fn main() {
31
31
  let mut v = vec![1,2,3,4,5];
32
- let v4: Option<&i32>;
32
+ let v4: Option<i32>;
33
33
  {
34
34
  let tmp: Option<&i32> = v.get(20);
35
35
  if tmp.is_none() {
36
36
  v4 = None;
37
37
  } else {
38
- let i = *tmp.unwrap();
38
+ v4 = Some(*tmp.unwrap());
39
- v4 = Some(*i);
40
39
  }
41
40
  }
42
41
  v.push(45);

1

スコープを用いて参照外しを考えた

2019/02/09 15:24

投稿

namuyan
namuyan

スコア76

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,23 @@
22
22
  ```
23
23
  上記のコードではエラーが出ます。v4の参照がある為です。
24
24
  v3のように参照を外したいのですがやり方がわかりません。
25
- やり方がわかる方がおられましたら宜しくお願いします。
25
+ やり方がわかる方がおられましたら宜しくお願いします。
26
+
27
+ 追記
28
+ ----
29
+ ```rust
30
+ fn main() {
31
+ let mut v = vec![1,2,3,4,5];
32
+ let v4: Option<&i32>;
33
+ {
34
+ let tmp: Option<&i32> = v.get(20);
35
+ if tmp.is_none() {
36
+ v4 = None;
37
+ } else {
38
+ let i = *tmp.unwrap();
39
+ v4 = Some(*i);
40
+ }
41
+ }
42
+ v.push(45);
43
+ println!("opt2 {:?}", v4);
44
+ ```