Macro anstream::print

source ·
macro_rules! print {
    ($($arg:tt)*) => { ... };
}
Available on crate feature auto only.
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();