回答編集履歴
2
方法2にbreak文を追加しました
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
余分な行を削除しました
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
|
}
|