Macro std::print

1.0.0 · source ·
macro_rules! print {
    ($($arg:tt)*) => { ... };
}
Expand description

打印到标准输出。

等效于 println! 宏,只是在消息末尾不打印换行符。

注意,默认情况下,stdout 通常是行缓冲的,因此可能有必要使用 io::stdout().flush() 以确保立即发出输出。

print! 宏将锁定每个调用的标准输出。如果您在热循环内调用 print!,则此行为可能是循环的瓶颈。 为了避免这种情况,用 io::stdout().lock() 锁定 stdout:

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

let mut lock = stdout().lock();
write!(lock, "hello world").unwrap();
Run

print! 仅用于程序的主要输出。请改用 eprint! 打印错误和进度消息。

Panics

如果写入 io::stdout() 失败,就会出现 panics。

写入非阻塞 stdout 可能会导致错误,这将导致此宏 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