Чтение необработанных байтов из стандартного ввода в Rust - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь прочитать в байтах из стандартного ввода в Rust.Приведенный ниже код отлично работает для строк, состоящих из обычных символов, но для необработанных байтов, у которых нет связанных символов (например, 0xe0), это вызывает панику в программе.Документация говорит о том, что она заканчивается на символе новой строки, но не упоминает никаких проблем с не символьными байтами.

РЕДАКТИРОВАТЬ: Я действительно пропустил, что он говорит, что все байты должны быть в кодировке UTF-8 - есть ли другая функция, которую я могу использовать для этого?

    let mut input = String::new();
    io::stdin().read_line(&mut input)
        .ok()
        .expect("Couldn't read line");   

1 Ответ

0 голосов
/ 29 ноября 2018

Оказывается, что Stdin реализует черту Read , поэтому я смог использовать метод bytes :

for i in io::stdin().bytes() {
    println!("read byte {}", i.unwrap());
}

И этот цикл можно разорвать, проверяя каждый байт до тех пор, пока он не станет желаемым.

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