Rust の範囲
Nilesh Katuwal
2023年6月21日
この記事では、Rust での範囲の作成について学びます。
Rust で範囲表記 a..b
を使用する
for in
構文を使用して Iterator
を反復処理することができます。 イテレータを生成する最も簡単な方法の 1つは、範囲表記 a..b
を使用することです。
これは、最も一般的な表記法の 1つです。 これにより、a
(包括的) から b
(排他的) までの範囲の値が 1 ステップずつ生成されます。
範囲には、時間の開始と終了の両方が含まれます。 そして、範囲に末尾を含めたい場合は、範囲構文 a..=b
を使用してこれを行うことができます。
例:
fn main() {
for i in 1..10 {
if i % 5 == 0 {
println!("hellothere");
} else if i % 2 == 0 {
println!("hello");
} else if i % 4 == 0 {
println!("there");
} else {
println!("{}", i);
}
}
}
出力:
1
hello
3
hello
hellothere
hello
7
hello
9
ここで、n
は、各反復で 1, 2, ..., 10
の値を取ります。
Rustで範囲表記a..=b
を使用する
代わりに、a..=b
は両端を含む range
にも使用できます。 上記のコードは、次のように書くこともできます。
fn main() {
for i in 1..=10 {
if i % 5 == 0 {
println!("hellothere");
} else if i % 2 == 0 {
println!("hello");
} else if i % 4 == 0 {
println!("there");
} else {
println!("{}", i);
}
}
}
出力:
1
hello
3
hello
hellothere
hello
7
hello
9
hellothere
ここで、n
は、各反復で 1, 2, ..., 10
の値も取ります。
Rust の C の for ループとしての a..b
a..b
構文は、C の for
ループの動作と同様に、数値の範囲を反復処理するために使用できます。
for i in 0..3 {
println!("{}", i);
}
インデックスと配列の要素の両方が必要な場合は、Iterator::enumerate
メソッドがこれを実現する慣用的な方法です。
fn main() {
let values = ["rust", "rust1", "rust2"];
for (x, y) in values.iter().enumerate() {
println!("The string for {} is {}", x, y);
}
}
出力:
The string for 0 is rust
The string for 1 is rust1
The string for 2 is rust2