Dev Study
← 解説「loop と while — 条件による繰り返し」に戻る

サンプルコードで身につける: loop と while — 条件による繰り返し

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1loop と break の基本

loop は条件なしで無限に繰り返し、break で抜ける、という最小の例です。「いつ終わるか」をループの中の if で自由に決められるのが loop の特徴です。まず「break がなければ永遠に回る」ことを意識すると、この後の例が読みやすくなります。

Rust

2break に値を添えてループの結果を受け取る

「2乗が50を超える最初の整数」を探し、見つかった値を break n で loop 式全体の値として返す例です。ループの外に結果用の変数を用意してから代入する書き方より、let answer = loop { ... } のほうが「探索の結果が answer に入る」ことが一目で分かります。探索や試行ループの結果の受け取りに使う形です。

Rust

3while でカウントダウン

「残りが 0 より大きい間」だけ繰り返す while の素朴な例です。loop + if + break で書くより、継続条件が先頭に明示される分だけ意図が読み取りやすくなります。ループ内で必ず remaining を減らしている(条件に近づけている)ことを確認してください。

Rust

4目標額に達するまで積み立てる

「貯金が目標額未満の間は積み立てを続ける」という、終了回数が事前に分からない繰り返しを while で書く例です。回数が決まっていない・条件で終わる処理は while の出番です。何か月かかったかを別の mut 変数 months で数えており、ループに複数の状態が絡む実務的な形に一歩近づいています。

Rust

5リトライ待ち時間を倍々にする(指数バックオフ)

通信のリトライで使う「失敗するたびに待ち時間を2倍にし、上限に達したら打ち切る」という指数バックオフの骨格を loop で書いた実務寄りの例です。打ち切り時点の待ち時間を break で返し、let final_wait = loop { ... } で受け取っています。loop+break 値+while 的な条件判定が1つに収まった総合演習です。

Rust