Я изучаю Rust и на некоторое время застрял в этом фрагменте кода, который соответствует строке с некоторыми литералами.
while done_setup == false {
println!("Enter difficultly mode you wish to play (Easy/Medium/Hard):");
let mut difficulty = String::new();
io::stdin()
.read_line(&mut difficulty)
.expect("Invalid input, aborting");
match difficulty.as_str() {
"Easy" => {num_guesses = 10;},
"Medium" => {num_guesses = 7;},
"Hard" => {num_guesses = 3;},
_ => {
println!("Pls enter a valid difficulty mode!");
continue;
},
}
println!("You are playing in {} mode, you have {} tries!", difficulty, num_guesses);
done_setup = true;
}
Очевидно, что шаблон никогда не совпадает с «Easy», «Medium» или «Hard», поскольку пользовательский ввод ВСЕГДА переходит к регистру по умолчанию. Я читал подобные вопросы SO, и я понимаю, что объекты String - это не то же самое, что литералы (str), но не должен ли difficulty.as_str()
позаботиться об этом?
Я ищу чистый и "правильный" способ кодирования, любые предложения приветствуются и заранее благодарны!