Арифметика

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

fn main() {
    println!("результат: {}", interproduct(120, 100, 248));
}
This slide should take about 3 minutes.

Це перший раз, коли ми бачимо функцію, відмінну від main, але її значення повинно бути зрозумілим: вона отримує три цілих числа і повертає ціле число. Функції буде розглянуто більш детально пізніше.

Арифметика дуже схожа на інші мови, зі схожими пріоритетами.

Як бути з переповненням цілих чисел? У мовах C та C++ переповнення цілих чисел зі знаком фактично не визначено, і може робити невідомі речі під час виконання. У Rust воно визначене.

Замініть i32 на i16, щоб побачити цілочисельне переповнення, яке панікує (перевіряється) у налагоджувальній збірці і загортається у релізній збірці. Існують і інші варіанти, такі як переповнення, перенасичення і перенесення. Доступ до них здійснюється за допомогою синтаксису методу, наприклад, (a * b).saturating_add(b * c).saturating_add(c * a).

Насправді, компілятор виявить переповнення константних виразів, тому приклад вимагає окремої функції.