Соответствие строк с строковыми литералами в Rust - PullRequest
0 голосов
/ 26 апреля 2020

Я изучаю 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() позаботиться об этом?

Я ищу чистый и "правильный" способ кодирования, любые предложения приветствуются и заранее благодарны!

1 Ответ

1 голос
/ 26 апреля 2020

Результат может содержать завершающий символ новой строки.

trim может использоваться для удаления начальных и конечных пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...