Макрос print! как использовать
Пытаюсь сделать ввод и вывод данных на одной строке, т.е. хочу чтобы было так:
Введите число: ... //какой-то ввод
Использование макроса print!, не выводит текст сразу, он выводится когда-то потом. Как решение нашел следующее и оно работает:
let mut enter = String::new();
print!("Введите число:");
io::stdout().flush().unwrap();
io::stdin()
.read_line(&mut enter)
.expect("Ошибка чтения ввода!");
В документации говориться что print! и println! отличаются только переводом строки, но тогда вопрос почему println! срабатывает сразу, а print! потом. Почему так происходит? Можно ли как-то без дополнительного кода использовать print!, там где он уместен?
PS: видел вопрос в котором аналогичная тема поднимается, там как раз предлагают использовать аналогичный код, но почему???
Ответы (1 шт):
Лучшее решение в вашем случае будет просто использовать это:
fn main() {
let mut enter = String::new();
eprint!("Введите число:");
io::stdin()
.read_line(&mut enter)
.expect("Ошибка чтения ввода!");
}
Я не понимаю, чем отличается eprint от print, но это работает.