Rust:如何将格式化打印到 stderr?

eho*_*opz 1 printing stderr rust

我正在尝试stderr在 Rust 中打印一个格式化的字符串(这里是好奇的新手!),但看起来标准库中没有提供一个简单的便利宏(例如print!/println!for stdout)。

在 C 中,你可以这样做:

fprintf(stderr, "format_string", args ...);
Run Code Online (Sandbox Code Playgroud)

我已经成功地打印字符串文字stderr

let stderr = std::io::stderr();
writeln!(&mut stderr, "literal");
Run Code Online (Sandbox Code Playgroud)

想到的下一件事是先做一个format!,然后使用writeln!, mut 无法编译error: expected a literal。另一方面,stderr.write()expects &[u8],所以使用String::bytes().collect()也不起作用..

什么是正确的解决方案?

Luk*_*odt 5

请参阅链接副本的答案。从 Rust 1.19 开始,您可以使用eprintln!宏。