Aritimética

fn interproduct(a: i32, b: i32, c: i32) -> i32 {
    return a * b + b * c + c * a;
}

fn main() {
    println!("result: {}", interproduct(120, 100, 248));
}
This slide should take about 3 minutes.

Esta Ă© a primeira vez que vemos uma função diferente de main, mas o significado deve ser claro: ela recebe trĂȘs inteiros e retorna um inteiro. FunçÔes serĂŁo abordadas com mais detalhes posteriormente.

AritmĂ©tica Ă© muito semelhante a outras linguagens, com precedĂȘncia semelhante.

E quanto ao estouro de inteiros? Em C e C++, o estouro de inteiros com sinal Ă© realmente indefinido, e pode fazer coisas diferentes em plataformas ou compiladores diferentes. Em Rust, Ă© definido.

Altere os i32 para i16 para ver um estouro de inteiro, que causa um pùnico (verificado) em uma compilação de debug e um wrap-around em uma compilação de release. Existem outras opçÔes, como overflowing, saturação e carrying. Estes são acessados com sintaxe de método, por exemplo, (a * b).saturating_add(b * c).saturating_add(c * a).

Na verdade, o compilador detectarå o estouro de expressÔes constantes, é por isso que o exemplo requer uma função separada.