Rust 为什么在背对背的println和print语句之间会出现停顿?

Rust 为什么在背对背的println和print语句之间会出现停顿?,rust,Rust,我正在使用标准库net模块编写一个简单的HTTP请求: use std::io::prelude::*; use std::net; fn main() -> std::io::Result<()> { let request = b"GET / HTTP/1.1 Host: localhost:8080 "; let mut response = String::new(); print!("Connecting..."); let

我正在使用标准库
net
模块编写一个简单的HTTP请求:

use std::io::prelude::*;
use std::net;

fn main() -> std::io::Result<()> {
    let request = 
b"GET / HTTP/1.1
Host: localhost:8080

";

    let mut response = String::new();

    print!("Connecting...");
    let mut stream = net::TcpStream::connect("127.0.0.1:8080")
        .expect("Cannot connect to server");
    println!("Connected!");

    print!("Writing...");
    stream.write(request)
        .expect("Error writing");
    println!("Written!");

    print!("Reading...");
    stream.read_to_string(&mut response)
        .expect("Error reading");
    println!("Read!");

    println!("\nResponse:\n{}", response);
    Ok(())
}
当我运行程序时,在打印
write之间会有一两秒钟的停顿
读取…
。当似乎没有什么东西可以暂停执行时,为什么会出现这种暂停

服务器输出:

/:5.168ms
锈蚀量:

正在连接…已连接!
写……写!//在EOL这里暂停!
读…读!
答复:
HTTP/1.1200ok
X-Powered-By:Express
内容类型:text/html;字符集=utf-8
内容长度:2
ETag:W/“2-eoX0dku9ba8cNUXvu/DyeabcC+s”
日期:2018年12月6日星期四格林尼治标准时间22:32:47
连接:保持活力
好啊

stdout
通常是行缓冲的,这意味着它将您写入的内容存储在缓冲区中,直到看到换行符为止。所以在
println之前你不会看到任何东西!(“读!”)打印换行符

如果要在此之前显示内容,则需要


就这样。。谢谢你的帮助!
const express = require('express')
const app = express()
const port = 8080

app.get('/', (req, res) => {
  console.time('/')
  res.send('ok')
  console.timeEnd('/')
})

app.listen(port, () => console.log(`Server on ${port}`))
use std::io;  // for io::stdout

...

print!("Reading...");
io::stdout().flush()?;