如何在输出的同一行从键盘读取字符串?

How to read a string from keyboard on the same line with output?

我正在读取这样的字符串:

print!("Input string: "); 

let string: String = String::new();
std::io::stdin().read_line(&mut string);

当我启动程序时,我看到:

(write a string here)
Input string:

但我需要:

Input string: (write a string here)

如何实现?

添加对stdout().flush()的调用以强制缓冲区在调用read_line之前输出:

fn main() {
   print!("Input string: "); 
   std::io::stdout().flush();
   let mut string: String = String::new();
   std::io::stdin().read_line(&mut string);
}

接受的答案是正确的:您需要在 read_line 之前调用 stdout().flush()。但是代码不会在 Rust 1.6.0 上编译。以下更改将使其编译。他们还展示了如何使用结果字符串:

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

fn main() {
    print!("Input string: ");
    io::stdout().flush().ok().expect("Could not flush stdout");
    let mut string: String = String::new();
    let _ = std::io::stdin().read_line(&mut string);
    println!("{}", string.trim());
}