如何在Rust中打印没有尾随换行符的输出?

时间:2016-05-30 18:38:24

标签: rust newline println

Rust中的宏println!总是在每个输出的末尾留下换行符。例如

println!("Enter the number : ");
io::stdin().read_line(&mut num);

给出输出

Enter the number : 
56

我不希望用户的输入56位于新行上。我该怎么做?

2 个答案:

答案 0 :(得分:21)

乍一看它比看起来更棘手。其他答案提到了print!宏,但它并不那么简单。您可能需要刷新标准输出,因为它可能不会立即写入屏幕。 flush()std::io::Write的一部分,因此需要在其范围内工作(这是一个非常容易的早期错误)。

use std::io;
use std::io::Write; // <--- bring flush() into scope


fn main() {
    println!("I'm picking a number between 1 and 100...");

    print!("Enter a number: ");
    io::stdout().flush().unwrap();
    let mut val = String::new();

    io::stdin().read_line(&mut val)
        .expect("Error getting guess");

    println!("You entered {}", val);
}

答案 1 :(得分:20)

您可以使用print! macro代替。

print!("Enter the number : ");
io::stdin().read_line(&mut num);

请注意:

  

请注意,默认情况下stdout经常是行缓冲的,因此可能需要使用io::stdout().flush()来确保立即发出输出。