عملگرهای ریاضی
fn interproduct(a: i32, b: i32, c: i32) -> i32 { return a * b + b * c + c * a; } fn main() { println!("result: {}", interproduct(120, 100, 248)); }
این اولین بار است که تابعی غیر از "main" می بینیم، اما معنی آن باید واضح باشد: سه عدد صحیح می گیرد و یک عدد صحیح برمی گرداند. توابع بعداً با جزئیات بیشتر پوشش داده خواهد شد.
حسابی بسیار شبیه به زبان های دیگر است، با تقدم مشابه.
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)
.
در واقع، کامپایلر سرریز عبارات ثابت را تشخیص می دهد، به همین دلیل است که مثال به یک تابع جداگانه نیاز دارد.