提示语写了,为什么终端还像没看见?
别急着怪 read_line 卡住。先逐步走一遍输出路径:文字会先到 stdout 的用户态缓冲区,只有刷新后,终端才真正拿到它。
stdout 缓冲区
空
用户看到的终端
这里还没有任何输出
准备好了。 先执行
print!,看看文字停在哪里。print! 只负责写不带换行时,提示语可能继续躺在缓冲区里;“写了”不等于“已经显示”。
flush 是交接动作它让缓冲区把已有内容交给底层输出流。失败仍是 I/O 错误,所以要处理
Result。交互程序尤其敏感提示语不可见、程序又等待输入时,用户只会觉得它死了。这里的一次刷新,换来的是明确的反馈。