Macro std::print

1.0.0 · source ·
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();

Use print! only for the primary output of your program. Use eprint! instead to print error and progress messages.

See the formatting documentation in std::fmt for details of the macro argument syntax.


Panics if writing to io::stdout() fails.

Writing to non-blocking stdout can cause an error, which will lead this macro to panic.


use std::io::{self, Write};

print!("this ");
print!("will ");
print!("be ");
print!("on ");
print!("the ");
print!("same ");
print!("line ");


print!("this string has a newline, why not choose println! instead?\n");