В книге , будущим рустам достанется построить угадайку. В этой игре в угадайку есть следующий фрагмент:
let mut guess = String::new();
io::stdin().read_line(&mut guess)
.expect("Failed to read line");
Хм ... почему бы read_line()
потерпел неудачу, подумал я. А потом выяснил трудный путь: вместо 50
я ввел 5ß
(немецкие клавиатуры ...) и ... строка чтения не удалась.
Так что я решил исправить это быстро.
match io::stdin().read_line(&mut guess) {
Ok(str) => str,
Err(_) => println!("Please only enter ASCII characters.");
}
Это вернуло несоответствие типов: Ожидается ()
, найдено usize
Ах, верно! read_line()
возвращает количество введенных байтов в результате Ok
. Но я не хочу ничего делать с этой информацией, поэтому я заменил приведенное выше выражение Ok:
Ok(_) => {},
Это работает. Но это правильный способ сделать это? Я в основном говорю программе запускать пустой блок кода на Ok
, что я считаю плохим стилем в таких языках, как Java, PHP, JavaScript и т. Д.