Rust

【Rust】第2章第2回:ループ処理:for文、while文、loopの活用

本記事では、Rustにおけるループ処理の基本であるfor文、while文、loopの使い方について詳しく解説します。繰り返し処理を適切に使い分けることで、効率的なプログラムを作成できるようになります。

0. 記事の概要

この記事を読むメリット

  • Rustのループ処理の基本を理解: for文、while文、loopの違いを学べます。
  • コードの効率化: 適切なループを活用し、よりシンプルで可読性の高いコードを実装できます。
  • エラーを防ぐ: 無限ループやインデックスエラーを回避する方法を学べます。

この記事で学べること

  • for文の使い方と反復処理
  • while文の条件付きループ
  • loopによる無限ループとbreakの活用

1. for文の基本

1.1 for文の基本構文

for文は、コレクション(配列や範囲)を反復処理する際に使用します。

fn main() {
    let numbers = [1, 2, 3, 4, 5];
    for num in numbers.iter() {
        println!("数値: {}", num);
    }
}

動作解説

このコードでは、配列numbersの各要素を順番に取り出して出力しています。

1.2 範囲を指定したfor文

for文は、範囲を指定してループを行うことも可能です。

fn main() {
    for i in 1..=5 {
        println!("{}回目のループ", i);
    }
}

動作解説

1..=5の範囲が指定され、1から5までの数値をループします。

2. while文の基本

2.1 while文の基本構文

while文は、条件がtrueである限りループを続けます。

fn main() {
    let mut count = 0;
    while count < 5 {
        println!("カウント: {}", count);
        count += 1;
    }
}

動作解説

countが5未満の間、ループが続きます。ループのたびにcountが1ずつ増加します。

2.2 breakを用いたループ終了

whileループ内でbreakを使用すると、任意のタイミングでループを終了できます。

fn main() {
    let mut x = 10;
    while x > 0 {
        if x == 5 {
            break;
        }
        println!("xの値: {}", x);
        x -= 1;
    }
}

動作解説

変数xが5になった時点で、breakが実行され、ループが終了します。

3. loopの活用

3.1 無限ループの作成

loopを使用すると、条件なしで無限ループを作成できます。

fn main() {
    loop {
        println!("無限ループ中...");
    }
}

動作解説

このコードは、明示的に停止しない限り永遠に実行されます。

3.2 breakとreturnを使ったループ終了

breakを使用してloopを終了し、値を返すこともできます。

fn main() {
    let result = loop {
        let x = 5;
        break x * 2;
    };
    println!("結果: {}", result);
}

動作解説

loop内で計算した値をbreakを使って返し、変数resultに格納しています。

4. よくあるエラーと対処法

  • 「index out of bounds」エラー: 配列のインデックス範囲を超えた場合に発生。ループの範囲を確認する。
  • 「infinite loop detected」エラー: 無限ループに陥る可能性がある場合に発生。適切な終了条件を追加する。

5. まとめ

本記事では、Rustのループ処理であるfor文、while文、loopの基本的な使い方を解説しました。次回は、Rustの関数の定義と呼び出しについて詳しく説明します。