如何避免在 Rust 中使用 stdin 换行

How to avoid going to new line with stdin in 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);
    }
}

所以当我输入一些东西时,程序 returns "Your age:" 加上我的输入。 但是当我 运行 程序时,我不想在新行中写输入。 要在 Python 中做类似的事情,我可以写:

var = input("Your age: ")

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

您需要在阅读行之前刷新 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);
    }
}

来自print! documentation

Note that stdout is frequently line-buffered by default so it may be necessary to use io::stdout().flush() to ensure the output is emitted immediately.