Aritmetik

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

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

İlk defa main dışında bir fonksiyon görüyoruz, ancak anlamı açık: üç tamsayı alır ve bir tamsayı geri döndürür. Fonksiyonlar daha sonra daha detaylı olarak ele alınacaktır.

Aritmetik, benzer öncelik (precedence) kurallarıyla birlikte diğer dillerdeki aritmetiğe oldukça benzerdir.

Peki, tamsayı taşması ne olacak? C ve C++’da işaretli tamsayıların taşması aslında tanımsızdır (undefined) ve çalışma zamanında bilinmeyen şeyler olabilir. Rust’ta ise bu tanımlıdır.

Bir hata ayıklama (debug) inşasında paniğe (kontrollü) neden olan ve bir sürüm (release) inşasında sarmalanan (wrap) bir tamsayı taşmasını görmek için i32’leri i16 olarak değiştirin. Taşma (overflow), doyum (saturating), elde (carrying) gibi işlemlerinin kontrolü için başka seçenekler de vardır. Bunlara metot sözdizimi ile erişilir, örneğin (a * b).saturating_add(b * c).saturating_add(c * a).

Aslında derleyici sabit ifadelerin (constant expression) taşmasını algılayacaktır, bu nedenle örnek ayrı bir fonksiyon gerektirir.