如何避免在 Rust 中使用标准输入换行

Chr*_*oen 3 stdin input line rust

我有这个代码:

fn main() {
    let mut stdin = io::stdin();
    let input = &mut String::new();

    loop {
        input.clear();
        print!("Your age: ");
        stdin.read_line(input);
        print!("{}", input);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我输入某些内容时,程序会返回“您的年龄:”加上我的输入。但是当我运行程序时,我不想在新行中写入输入。要在 Python 中执行类似的操作,我可以编写:

var = input("Your age: ")
Run Code Online (Sandbox Code Playgroud)

如何避免转入新线路?我确信这很简单,但我真的不知道该怎么做,我尝试了很多不同的东西......

ant*_*oyo 6

stdout在阅读该行之前您需要冲洗:

use std::io::{self, Write};

fn main() {
    let mut stdin = io::stdin();
    let input = &mut String::new();

    loop {
        input.clear();
        print!("Your age: ");
        io::stdout().flush();
        stdin.read_line(input);
        print!("{}", input);
    }
}
Run Code Online (Sandbox Code Playgroud)

print!文档中:

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