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();
Runprint!
仅用于程序的主要输出。请改用 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