「Rust」標準出力でメッセージ出力し、改行せず標準入力を受け付ける方法「std::io::stdin::read_line,print!」

スポンサーリンク

今回はRustで標準出力でメッセージ出力し、改行せず標準入力を受け付ける方法を紹介したいと思います。

結論

print!でメッセージを表示「要求」後にstd::io::stdout::flushでフラッシュで表示を行い、その後std::io::stdin::read_lineで標準入力を受け付けます。

サンプルコード

std::io::Write;flush()を実行する際に必要です。

use std::io::{stdin, stdout, Write};

fn main() {
    print!("input please: ");
    stdout().flush().unwrap();

    let mut input = String::new();
    stdin().read_line(&mut input).unwrap();

    println!("input is {}", input);
}

解説

print!("input please: ");でメッセージ出力を要求しstdout().flush().unwrap();でフラッシュ(表示)させます。

その後stdin().read_line(&mut input).unwrap();で入力を受け付けます。

print!でメッセージ表示を行うため改行が入っていないため同じ行で入力を受け付けます。

実行結果

cargo run xxx
   
input please: hoge
input is hoge