AnyCompiler

Controle de Fluxo

if em Rust é uma expressão, não só uma instrução — ele pode produzir um valor, por isso você pode atribuir o resultado de um if/else diretamente a uma variável em vez de declarar a variável primeiro e atribuir dentro de cada ramo.

fn main() {
    let number = 7;

    let description = if number % 2 == 0 {
        "even"
    } else {
        "odd"
    };

    println!("{} is {}", number, description);
}
Output
7 is odd

loop, while, e for

loop roda para sempre até você sair dele explicitamente com break — e break pode carregar um valor para fora do loop, se tornando o resultado da expressão loop, algo que while e for não conseguem fazer já que não são feitos para calcular um valor. for itera diretamente sobre um intervalo ou coleção, sem nenhum controle manual de índice.

fn main() {
    let mut count = 0;
    let result = loop {
        count += 1;
        if count == 5 {
            break count * 2;
        }
    };
    println!("result = {}", result);

    for i in 0..3 {
        println!("i = {}", i);
    }
}
Output
result = 10
i = 0
i = 1
i = 2

Próximo: vectors — o tipo de array crescível do Rust.

Practice Exercise

Defina uma variável score: i32 = 73. Use uma expressão if/else para definir uma variável grade como "pass" se score for 60 ou mais, ou "fail" caso contrário, depois imprima grade.