توابع

fn gcd(a: u32, b: u32) -> u32 {
    if b > 0 {
        gcd(b, a % b)
    } else {
        a
    }
}

fn main() {
    println!("gcd: {}", gcd(143, 52));
}
This slide should take about 3 minutes.
  • بعد اعلان تابع پارامترهای ورودی و نوع آن و سپس یک نوع برگشتی هستند (برخلاف برخی از زبان‌های برنامه‌نویسی).
  • آخرین عبارت در بدنه تابع (یا هر بلوک دیگری) به عنوان مقدار برگشتی در نظر گرفته می‌شود. به همین سادگی ; را میتوان در انتهای عبارت حذف کنید.
  • Some functions have no return value, and return the 'unit type', (). The compiler will infer this if the return type is omitted.
  • بارگذاری مجدد (overloading) پشتیبانی نمی‌شود -- هر تابع فقط یک پیاده‌سازی دارد.
    • همیشه تعداد ثابتی از پارامترها را می گیرد. آرگومان های پیش فرض پشتیبانی نمی شوند. ماکروها را می توان برای پشتیبانی از توابع متغیر استفاده کرد.
    • همیشه یک مجموعه واحد از انواع آرگومان‌ها را می‌گیرد.