Арифметика
fn interproduct(a: i32, b: i32, c: i32) -> i32 { return a * b + b * c + c * a; } fn main() { println!("результат: {}", interproduct(120, 100, 248)); }
Це перший раз, коли ми бачимо функцію, відмінну від main
, але її значення повинно бути зрозумілим: вона отримує три цілих числа і повертає ціле число. Функції буде розглянуто більш детально пізніше.
Арифметика дуже схожа на інші мови, зі схожими пріоритетами.
Як бути з переповненням цілих чисел? У мовах C та C++ переповнення цілих чисел зі знаком фактично не визначено, і може робити невідомі речі під час виконання. У Rust воно визначене.
Замініть i32
на i16
, щоб побачити цілочисельне переповнення, яке панікує (перевіряється) у налагоджувальній збірці і загортається у релізній збірці. Існують і інші варіанти, такі як переповнення, перенасичення і перенесення. Доступ до них здійснюється за допомогою синтаксису методу, наприклад, (a * b).saturating_add(b * c).saturating_add(c * a)
.
Насправді, компілятор виявить переповнення константних виразів, тому приклад вимагає окремої функції.