Rust io :: read_line с консоли IntelliJ IDEA и Windows 10 cmd дает разные результаты - PullRequest
0 голосов
/ 23 января 2020

Я работаю над проектом Rust в IDEA (с официальным плагином Rust) и заметил очень странную разницу в Windows 10 cmd и консоли IDEA.

Простой io::read_line() в консоли IDEA делает именно то, что я ожидаю: он читает с клавиатуры на строку и выдает количество байтов в Result<usize>. Результатом является количество символов в строке плюс EOL.

Когда я запускаю этот самый код в cmd, он всегда читает один дополнительный байт.

Я сделал самый простой тестовый проект, чтобы увидеть если только я не вижу вещи, но это сохраняется и в новом проекте. Взгляните:

fn main() {
    let mut string = String::new();
    match std::io::stdin().read_line(&mut string) {
        Ok(size) => {
            println!("We have read {} bytes", size);
        } Err(_) => {}
    }
}

Это приводит к консоли IDEA:

from IntelliJ IDEA

И в Win 10 cmd:

from win10 cmd

Почему это так?

Обновление: Да, Win10 заканчивает строки на \ r \ n, а IDEA только на \ n:

enter image description here

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