今回は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