الدوال

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.
  • معلمات التصريح (Declaration parameters) يتبعها نوع (type) (عكس بعض لغات البرمجة)، ثم نوع الإرجاع (return type).
  • آخر تعبير في جسم الدالة (function body) (أو أي كتلة) يصبح قيمة الإرجاع (return value). ببساطة احذف ; في نهاية التعبير. يمكن استخدام الكلمة المفتاحية return للإرجاع المبكر (early return)، ولكن الشكل "bare value" هو الشكل الاصطلاحي في نهاية الدالة (refactor gcd to use a return) قم بتغيير 'gcd' و استخدم 'return'.
  • بعض الدوال ليس لها قيمة إرجاع، وتعيد 'unit type'، (). سيستنتج المترجم (compiler) هذا إذا تم حذف نوع الإرجاع -> ().
  • التحميل الزائد (Overloading) غير مدعوم -- كل دالة لها تنفيذ واحد فقط.
    • دائمًا تأخذ عددًا ثابتًا من المعلمات (parameters). المعلمات الافتراضية (Default arguments) غير مدعومة. يمكن استخدام الماكروز (Macros) لدعم الدوال المتغيرة (variadic functions).
    • دائمًا تأخذ مجموعة واحدة من أنواع المعلمات (parameter types). يمكن أن تكون هذه الأنواع عامة (generic)، والتي سيتم تغطيتها لاحقًا.