回答編集履歴

2

方法2にbreak文を追加しました

2022/07/03 23:58

投稿

tatsuya6502
tatsuya6502

スコア2035

test CHANGED
@@ -33,6 +33,7 @@
33
33
  for (i, fruit) in fruits.iter().enumerate() {
34
34
  if fruit == "banana" {
35
35
  banana_idx = Some(i);
36
+ break;
36
37
  }
37
38
  }
38
39
 

1

余分な行を削除しました

2022/07/03 23:54

投稿

tatsuya6502
tatsuya6502

スコア2035

test CHANGED
@@ -1,6 +1,3 @@
1
-
2
- # Answer
3
-
4
1
  > ある変数`x`の参照`y = &x`を用いて、(元の`x`を破棄しながら)`x`の所有権を得るにはどうすれば良いでしょうか?
5
2
 
6
3
  safeなRustではできません。参照`&`は参照先のデータ(この例では`Vec<String>`)を**変更しない**という約束の下にデータを借用するためのものですので、safeなRustではその約束を破れないのです。
@@ -64,7 +61,8 @@
64
61
  for fruit in &mut fruits {
65
62
  if fruit == "banana" {
66
63
  // &mut Stringなら、mem::takeで取り出すことができる。
67
- // Vec<String>の元の場所には`String::default()`(新しい空の文字列)が入る
64
+ // Vec<String>の元の場所には`String::default()`
65
+ //(新しい空の文字列)が入る
68
66
  return std::mem::take(fruit);
69
67
  }
70
68
  }