https://doc.rust-jp.rs/rust-by-example-ja/flow_control/for.html
のサンプルに出てくるイテレータですが、iter(コレクションの要素を借用)、into_iter(コレクションからのデータの取り出し)、iter_mut(コレクションの要素をミュータブルで借用)の3種類があります。
crateのドキュメント、
https://doc.rust-lang.org/std/iter/
に記載がある通りなのですが、exampleから該当部分のコードを抜き出してみると、以下のようになります。
~~iter~~
for name in names.iter() {
match name {
&"Ferris" => println!("There is a rustacean among us!"),
~~into_iter~~
for name in names.into_iter() {
match name {
"Ferris" => println!("There is a rustacean among us!"),
~~iter_mut~~
for name in names.iter_mut() {
*name = match name {
&mut "Ferris" => "There is a rustacean among us!",
iterとiter_mutは”借用”なので元のコレクション(name)は再利用できますが、into_iterは”取り出し”なので元のコレクションは使えなくなります。
admin