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)); }
İlk defa main
dışında bir fonksiyon görüyoruz, ancak anlamı açık: üç tamsayı alır ve bir tamsayı döndürür. Fonksiyonlar daha sonra daha detaylı olarak ele alınacaktır.
Aritmetik işlemleri, diğer dillerinkine benzer öncelik sıralamasıyla çok 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 (constant) ifadelerin (expression) taşmasını algılayacaktır, bu nedenle örnek ayrı bir fonksiyon gerektirir.