Avatar ·

تحويل Option<String> إلى Option<&str> في Rust: كيف تفعل ذلك بشكل صحيح؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Rust وواجهت مشكلة في تحويل الأنواع. لدي دالة تُرجع `Option`، لكنني بحاجة لتمرير نتيجتها إلى دالة أخرى تتوقع `Option<&str>`. إليك مثال مبسط: ```rust fn get_name() -> Option { Some("Alice".to_string()) } fn print_name(name: Option<&str>) { match name { Some(n) => println!("Hello, {}", n), None => println!("No name provided"), } } fn main() { let name = get_name(); // كيف يمكن تمرير name إلى print_name؟ print_name(name); // خطأ في الترجمة! } ``` المترجم يعطي خطأ: `expected Option<&str>, found Option`. أفهم أن `String` و `&str` نوعان مختلفان، لكن كيف يمكن تحويل `Option` إلى `Option<&str>` بشكل صحيح؟ جربت فعل ذلك: `print_name(name.as_deref())`، لكنني لست متأكداً إذا كان هذا صحيحاً. أرجو شرح كيفية عمل ذلك وأي طريقة تعتبر أسلوباً معتاداً في Rust.