std::iterの3種類の関数(@Rust)

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

カテゴリーRust