#6 Rustで学ぶループの基本
Rustのループには、他の言語にはないloopという独自の書き方があります。この記事では、Rustにおけるループの基本と、便利な機能を解説します。
forによる繰り返し
Rustのfor文は、範囲やコレクションの中身を順番に処理する書き方です。
for i in 0..5 {
println!("{}", i);
}
0..5は「0から5未満まで」を表す範囲の書き方です。最後の値を含めたい場合は0..=5のように=を付けます。
while文
let mut count = 0;
while count < 5 {
println!("{}", count);
count += 1;
}
loopという無限ループ専用の書き方
Rustには、意図的に無限ループを書くためのloopという専用のキーワードがあります。
let mut count = 0;
loop {
println!("{}", count);
count += 1;
if count >= 5 {
break;
}
}
breakで処理を抜けるまで繰り返す、という意図がひと目でわかるのが特徴です。
loopが値を返せるという特徴
loopは、breakのときに値を返すこともできる独自の機能を持っています。
let mut count = 0;
let result = loop {
count += 1;
if count == 10 {
break count * 2;
}
};
println!("{}", result); // 20
条件を満たすまで試行を繰り返し、見つかった結果をbreakでそのまま返す、という書き方に便利です。
ラベルで多重ループから抜ける
二重ループの内側から、外側のループごと一気に抜けたい場合は、ループにラベルを付ける書き方が使えます。
'outer: for i in 0..3 {
for j in 0..3 {
if i == 1 && j == 1 {
break 'outer;
}
println!("{}, {}", i, j);
}
}
Rustならではの注意点
while true { ... }と書いても無限ループは実現できますが、Rustでは「意図的な無限ループ」であることを明確にするためにloopを使うことが推奨されています。コードを読む人に対して、意図が伝わりやすくなるという利点があります。
continueで次のループへ進む
特定の条件のときだけ処理をスキップして次の繰り返しに進みたい場合は、他の言語と同じくcontinueが使えます。
for i in 0..10 {
if i % 2 == 0 {
continue;
}
println!("{}", i); // 奇数だけ表示される
}
まとめ
Rustのループはfor・whileに加え、無限ループ専用のloopが用意されているのが特徴です。breakで値を返せる独自機能やcontinueも含め、意図に応じて使い分けることで、読みやすいコードになります。
本ページはプロモーションを含みます。
参考書籍(PR)
Rustをもっと学びたい方には「実践Rust入門[言語仕様から開発手法まで]」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿