macro_rules! print { ($($arg:tt)*) => { ... }; }
Expand description
Prints to the standard output.
Equivalent to the println!
macro except that a newline is not printed at
the end of the message.
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.
The print!
macro will lock the standard output on each call. If you call
print!
within a hot loop, this behavior may be the bottleneck of the loop.
To avoid this, lock stdout with io::stdout().lock()
:
use std::io::{stdout, Write};
let mut lock = stdout().lock();
write!(lock, "hello world").unwrap();
RunUse print!
only for the primary output of your program. Use
eprint!
instead to print error and progress messages.
Panics
Panics if writing to io::stdout()
fails.
Writing to non-blocking stdout can cause an error, which will lead this macro to panic.
Examples
use std::io::{self, Write};
print!("this ");
print!("will ");
print!("be ");
print!("on ");
print!("the ");
print!("same ");
print!("line ");
io::stdout().flush().unwrap();
print!("this string has a newline, why not choose println! instead?\n");
io::stdout().flush().unwrap();
Run