Avatar ·

كيفية مقارنة String مع القيم الحرفية النصية في match في Rust؟

مرحباً أيها الزملاء! لقد بدأت مؤخراً في تعلم Rust وواجهت مشكلة عند استخدام بنية `match` مع السلاسل النصية. لدي متغير من النوع `String`، وأريد مقارنته بعدة ثوابت نصية. هذا هو الكود الخاص بي: ```rust fn main() { let user_input = String::from("start"); match user_input { "start" => println!("Запуск..."), "stop" => println!("Остановка..."), "help" => println!("Помощь..."), _ => println!("Неизвестная команда"), } } ``` المترجم يظهر خطأ: `expected struct String, found &str`. أنا أفهم أن `String` و `&str` هما نوعان مختلفان في Rust، ولكن كيف يمكن ترتيب المطابقة بشكل صحيح؟ حاولت تحويل `user_input` إلى `&str` باستخدام `as_str()`، ولكن بعد ذلك يشتكي من أن الثوابت يجب أن تكون من نوع `String`. أصبحت في حلقة مفرغة. أرجو منكم إرشادي إلى كيفية حل هذه المشكلة بكفاءة؟ أحتاج إلى أن يكون الكود فعالاً ومتناغماً مع Rust. شكراً مقدماً.