English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Rust ループ

Rustは柔軟な条件文だけでなく、ループ構造の設計も非常に成熟しています。これは経験豊富な開発者が感じることができるでしょう。

whileループ

whileループは最も典型的な条件文ループです:

fn main() {
    let mut number = 1; 
    while number != 4  
        println!("{}", number); 
        number += 1; 
    } 
    println!("EXIT"); 
}

実行結果:

1
2
3
EXIT

Rust言語では、このテキストの作成時点までdoはありません-whileの用法ですが、doは保留語として指定されています。将来のバージョンで使用されるかもしれません。

C 言語ではforループは三項演算子を使用してループを制御しますが、Rustではこのような用法はありません。代わりにwhileループを使用する必要があります:

C 言語

int i; 
for (i = 0; i < 10; i++) { 
    // ループ体
}

Rust

let mut i = 0; 
while i < 10  
    // ループ体 
    i += 1; 
}

for ループ

for ループは最もよく使われるループ構造で、線形データ構造(例えば配列)を巡回するためによく使われます。for ループで配列を巡回:

fn main() { 
    10 2 3 4 5 
    for i in a.iter() { 
        println!("値は : {}", i); 
    } 
}

実行結果:

値は : 10
値は : 20
値は : 30
値は : 40
値は : 50

fn main() { 
10 2 3 4 5 
    5  
        println!("a[{}] = {} 
    } 
}

実行結果:

a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50

loop ループ

経験豊富な開発者は、ループの開始と終了でループが継続するかどうかを判断できない場合がいくつかあるでしょう:ループの体の中でループの進行を制御する必要がある場合があります。このような場合、しばしばwhile(true)ループ体の中でループの途中での退出操作を実現します。

Rust言語には、原生的な無限ループ構造があります——loop:

fn main() { 
    let s = ['R', 'U', 'N', 'O', 'O', 'B']; 
    let mut i = 0; 
    loop { 
        let ch = s[i]; 
        if ch == 'O' { 
            break; 
        } 
        println!("'{}'", ch);
        i += 1; 
    } 
}

実行結果:

'R' 
'U' 
'N'

loop ループはbreakキーワードを使用して、ループ全体をreturnのように退出し、外部に戻り値を提供することができます。これは非常に賢明なデザインであり、loopのようなループはよく検索ツールとして使用されますが、何かを見つけた場合、この結果を返す必要があります:

fn main() { 
    let s = ['R', 'U', 'N', 'O', 'O', 'B']; 
    let mut i = 0; 
    let location = loop { 
        let ch = s[i];
        if ch == 'O' { 
            break i; 
        } 
        i += 1; 
    }; 
    println!("'O'のインデックスは{}", location); 
}

実行結果:

 'O'のインデックスは 3