if ou else

A ramificação com if ou else é semelhante às outras linguagens. Ao contrário delas, a condição booleana não precisa ser envolvida por parênteses, e cada condição é seguida por um bloco. As condicionais if e else são expressões, e todos os ramos deve retornar o mesmo tipo.

fn main() {
    let n = 5;

    if n < 0 {
        print!("{} is negative", n);
    } else if n > 0 {
        print!("{} is positive", n);
    } else {
        print!("{} is zero", n);
    }

    let big_n =
        if n < 10 && n > -10 {
            println!(", and is a small number, increase ten-fold");

            // Esta expressão retorna uma `i32`.
            10 * n
        } else {
            println!(", and is a big number, halve the number");

            // Esta expressão deve retornar também uma `i32`.
            n / 2
            // TODO ^ Tente suprimir esta expressão com um ponto e vírgula.
        };
    //   ^ Não esqueça do ponto e vírgula! Todos vínculos de `let` precisam.

    println!("{} -> {}", n, big_n);
}