كيفية مقارنة 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. شكراً مقدماً.