input - print!() 在输入输入后执行
问题描述
我想知道为什么这里的print!()宏在read_line之后执行
// ./src/main.rs
use std::io;
fn main() {
print!("Input : ");
let stdin = io::stdin();
let mut input = String::new();
stdin.read_line(&mut input).expect("Couldn't read_line");
}
这段代码打印出来:
heyy
Input :
但我希望:
Input : heyy
解决方案
您可以在此处阅读 Rust 文档:https ://doc.rust-lang.org/std/macro.print.html
具体来说,这一行:
“请注意,默认情况下标准输出经常被行缓冲,因此可能需要使用 io::stdout().flush() 来确保立即发出输出。
在使用大多数语言的终端时,这很常见。stdout
在几乎所有终端上都有缓冲。您可以在某些 AFAIK 上将其关闭,但您最好按照他们的建议调用 flush 或者我相信如果您向其写入新行,大多数终端都会刷新其输出。
推荐阅读
- c++ - 子模板中的 C++ 模板特化
- python - 计算多项式回归python的预测值时出错
- c# - C# 健壮的密钥对匹配
- javascript - Swiper 分页在桌面和移动设备中无法正常工作
- c++ - 为什么这段代码(在 Matlab 的 MEX 文件中使用 OpenMP)给出不同的结果?
- android - 从房间数据库中删除一行时出现错误
- laravel - Laravel 护照个人访问令牌不会过期
- java - 为什么在编译时不检查 lambda 返回类型?
- c++ - 内存浪费?如果 main() 应该只返回 0 或 1,为什么 main 声明为 int 而不是 short int 甚至 char?
- java - spring-data-jdbc 只读