導入
決まった回数や、配列の各要素をたどるなら for が最適です。Rust の for は「範囲」や「コレクション」を順番に受け取る形で、添字の書き間違いによるバグが起きにくくなっています。
説明
fn main() {
// 範囲: 0..5 は 0,1,2,3,4(5は含まない)。0..=5 なら5も含む
for i in 0..5 {
print!("{i} ");
}
println!();
// 配列を1要素ずつたどる
let colors = ["赤", "緑", "青"];
for c in colors {
println!("色: {c}");
}
// 添字も一緒に欲しいとき: enumerate()
for (index, c) in colors.iter().enumerate() {
println!("{index}番目: {c}");
}
// 逆順
for i in (1..=3).rev() {
print!("{i} "); // 3 2 1
}
println!();
}
0..5…5を含まない範囲(0,1,2,3,4)。0..=5と書くと5を含みます。for c in colors… 配列やコレクションを1要素ずつ受け取ります。C言語のようにiを用意してcolors[i]とする必要がなく、範囲外アクセスのミスが原理的に起きません。.enumerate()… 添字と値のペアを返します。.rev()… 逆順にします。
for が「添字」ではなく「要素そのもの」を回すのは、安全性のためだけでなく、後で学ぶイテレータという強力な仕組みの入り口でもあります。
試すには
for i in 0..5 を 0..=5 に変えると、出力が 0 1 2 3 4 5 になります。..(含まない)と ..=(含む)の違いは Rust で頻繁に使うので、指に覚えさせておきましょう。