一个使用它将输出发送到stdout:
println!("some output")
Run Code Online (Sandbox Code Playgroud)
我认为没有相应的宏可以为stderr做同样的事情.
She*_*ter 71
从Rust 1.19开始,您可以使用eprint
和eprintln
宏:
fn main() {
eprintln!("This is going to standard error!, {}", "awesome");
}
Run Code Online (Sandbox Code Playgroud)
这最初是在RFC 1896中提出的.
你可以看到它的实现,println!
以深入了解它是如何工作的,但是当我第一次阅读它时,它有点压倒性.
您可以使用类似的宏格式化东西到stderr:
use std::io::Write;
let name = "world";
writeln!(&mut std::io::stderr(), "Hello {}!", name);
Run Code Online (Sandbox Code Playgroud)
这会给你一个unused result which must be used
警告,因为打印到IO 可能会失败(这不是我们打印时通常会考虑的事情!).我们可以看到现有方法在这种情况下只是恐慌,所以我们可以更新我们的代码来做同样的事情:
use std::io::Write;
let name = "world";
let r = writeln!(&mut std::io::stderr(), "Hello {}!", name);
r.expect("failed printing to stderr");
Run Code Online (Sandbox Code Playgroud)
这有点多了,所以让我们把它换回宏:
use std::io::Write;
macro_rules! println_stderr(
($($arg:tt)*) => { {
let r = writeln!(&mut ::std::io::stderr(), $($arg)*);
r.expect("failed printing to stderr");
} }
);
fn main() {
let name = "world";
println_stderr!("Hello {}!", name)
}
Run Code Online (Sandbox Code Playgroud)
Fra*_*gné 19
print!
并且println!
是写入标准输出的便捷方法.还有其他宏具有相同的格式化功能可用于不同的任务:
要写入标准错误流,您可以使用writeln!
如下所示:
use std::io::Write;
fn main() {
let mut stderr = std::io::stderr();
writeln!(&mut stderr, "Error!").unwrap();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15429 次 |
最近记录: |