見出し画像

Rust forループとrangeの使い方と注意点について

Rustのforループとrangeは、コレクションや数値範囲を反復するための使用する構造です。

forループは、イテレータを使ってデータの集まりを順次処理するために使用され、rangeは指定した範囲内の値を生成します。


forとrangeの使い方

forループ

forループを使って、イテレータを反復処理できます。

let numbers = vec![1, 2, 3, 4, 5];

for num in &numbers { 
    println!("{}", num);
}

forループを使ってvec!で定義されたベクター内の要素を順次処理しています。


rangeを使ったforループ

Rustのrange構文を使うと、指定した範囲内の値を生成できます。
rangeは、start..endまたはstart..=endの形式で指定します。

for i in 0..5 {
    println!("{}", i);
}

for j in 1..=3 {
    println!("{}", j);
}

rangeを使って0から4まで、または1から3までの値を生成しています。
..と..=の違いは、..が終端を含まないのに対し、..=は終端を含むことです。


enumerateを使った反復

forループにenumerateを組み合わせると、要素のインデックスと値を同時に取得できます。

let items = ["a", "b", "c"];

for (index, item) in items.iter().enumerate() { 
    println!("Index: {}, Item: {}", index, item);
}

enumerateを使ってインデックスと値を同時に取得しながら反復しています。


注意点

範囲外アクセス

rangeを使用する場合、終端を含むか含まないかに注意します。
範囲外の値にアクセスすると、パニックが発生します。..と..=の違いを理解し、範囲外アクセスを防ぐようにします。


スコープとシャドーイング

forループ内で変数を再定義する場合、シャドーイングに注意します。
同じ名前の変数が異なるスコープで再定義されると、意図せずに変数を上書きする可能性があります。


イテレータの適用範囲

forループは、イテレータに基づいて反復処理を行います。
したがって、ループを抜ける必要がある場合は、breakやreturnを使用します。continueを使うと、次の繰り返しに進みます。



Rustをもっと詳しくなりたい方に

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!

個人的には他の言語開発もそれなりにあったことからこの本を読むことでかなりRustへの理解が深まりました。
プログラムやシステム的な専門用語は当たり前に登場するものの、他の言語での開発経験がある方なら問題ないでしょう。むしろその経験があることで、多言語との比較をしながら読み進めることができます。
内容的には大容量かつ丁寧すぎるほど嚙み砕いて説明がされているため、情報量は十分といえます。Rust自体学習コストが高く、難易度の高い言語のためこのくらいが妥当といえます。
プログラミング初心者レベルの方には難しい内容となっていますが、Rustの概念を理解し、基礎を把握することができる本であること間違いなしです。

Rust学習のために筆者が実際に読んでおすすめしたい本をまとめています。


基礎から学ぶRustプログラミング入門

本コースではRustについて全く経験がない方でもスムーズに学習を進められるようにとなっています。
基本的にはコードベースで解説を行い、抽象度が高く難しい内容に関しては適宜スライドも使いながら丁寧に解説します。そしてただ文法を学ぶだけではなく、最終的には演習としてCLIアプリケーションを作成し学習内容の定着を図ります。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています

この記事が参加している募集

#この経験に学べ

53,046件

この記事が気に入ったらサポートをしてみませんか?