كيفية تنفيذ وسائط الدوال الافتراضية في Rust؟
مرحبًا أيها الزملاء! أنا جديد في Rust وأنتقل من Python، حيث يمكنك بسهولة كتابة دوال مع وسائط افتراضية:
def greet(name, greeting="Привет"):
print(f"{greeting}, {name}!")
الآن أحاول فعل الشيء نفسه في Rust، لكن المترجم يشتكي. إليك الكود الخاص بي:
fn greet(name: &str, greeting: &str = "Привет") {
println!("{}, {}!", greeting, name);
}
يُصدر المترجم خطأ: expected identifier, found `=`. أفهم أنه لا يوجد في Rust بناء جملة للوسائط الافتراضية، ولكن كيف يمكن حل هذه المشكلة؟ أحتاج إلى أن تعمل الدالة مع وسيط واحد (عندها تكون التحية الافتراضية "Привет") ومع وسيطين.
لقد جربت بالفعل استخدام overloading للدوال، لكن Rust لا تدعمها. حاولت إنشاء دالتين بأسماء مختلفة — هذا يعمل، لكن الكود يصبح ضخمًا. هل هناك طريقة أكثر idiomatic؟ ربما استخدام structs أو enums؟ أم أن هناك طريقة أفضل؟