Я работаю над проектом 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:
И в Win 10 cmd:
Почему это так?
Обновление: Да, Win10 заканчивает строки на \ r \ n, а IDEA только на \ n: