算術
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
以外の関数が出てきたのは今回が初めてですが、その意味は明確です。つまり、3 つの整数を取り、1 つの整数を返します。関数については、後で詳しく説明します。
算術は他の言語とよく似ており、優先順位も類似しています。
What about integer overflow? In C and C++ overflow of signed integers is actually undefined, and might do unknown things at runtime. In Rust, it's defined.
i32
を i16
に変更して、整数オーバーフローを確認します。これは、デバッグビルドではパニックになり(チェックされ)、リリースビルドではラップされます。オーバーフロー、飽和、キャリーなどのオプションもあり、メソッド構文を使用してこれらのオプションにアクセスします(例: (a * b).saturating_add(b * c).saturating_add(c * a)
)。
実際には、コンパイラは定数式のオーバーフローを検出します。この例で別の関数が必要になるのはそのためです。