マクロprintln!
in Rustは、各出力の最後に常に改行文字を残します。たとえば、
println!("Enter the number : ");
io::stdin().read_line(&mut num);
出力を与える
Enter the number :
56
ユーザーの入力が必要ない56
を改行します。どうすればよいですか?
代わりに _print!
_マクロ を使用できます。
_print!("Enter the number : ");
io::stdin().read_line(&mut num);
_
注意してください:
Stdoutはデフォルトで行バッファリングされることが多いため、出力がすぐに出力されるように
io::stdout().flush()
を使用する必要がある場合があることに注意してください。
一見したところよりもトリッキーです。他の回答では_print!
_マクロについて言及していますが、それほど単純ではありません。 stdoutは画面にすぐに書き込まれない可能性があるため、フラッシュする必要がある可能性があります。 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);
}
_