算術

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.

這是我們第一次看到 main 以外的函式,但此函式的含意應該很清楚,那就是它需要三個整數,且會傳回整數。我們稍後會詳細說明函式的細節。

在其他語言中,算數的方法非常相似,運算的優先順序也雷同。

那麼整數溢位現象呢?在 C 和 C++ 中,「有號」整數的溢位現象實際上並未定義,而且在不同的平台或編譯器上可能有不同行為。但在 Rust 中,整數溢位會經過定義。

i32 變更為 i16,即可查看整數溢位現象,這在偵錯版本中會造成恐慌 (checked),並納入發布子版本中。此外,Rust 還提供溢位、飽和與進位等其他選項,可透過方法語法存取,例如 (a * b).saturating_add(b * c).saturating_add(c * a)

事實上,編譯器會偵測常數運算式的溢位,這也是本例中需要另一個函式的原因。