macro_rules! print { ($($arg:tt)*) => { ... }; }
Expand description
Prints to stdout
.
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 std::io::Write::flush()
to ensure the output is emitted
immediately.
NOTE: 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 AutoStream::lock
:
use std::io::Write as _;
let mut lock = anstream::stdout().lock();
write!(lock, "hello world").unwrap();
Use print!
only for the primary output of your program. Use
eprint!
instead to print error and progress messages.
§Panics
Panics if writing to stdout
fails for any reason except broken pipe.
Writing to non-blocking stdout can cause an error, which will lead this macro to panic.
§Examples
use std::io::Write as _;
use anstream::print;
use anstream::stdout;
print!("this ");
print!("will ");
print!("be ");
print!("on ");
print!("the ");
print!("same ");
print!("line ");
stdout().flush().unwrap();
print!("this string has a newline, why not choose println! instead?\n");
stdout().flush().unwrap();