1个不稳定版本
使用旧的Rust 2015
0.0.1 | 2015年10月31日 |
---|
#17 in #happen
在magicalstick中使用
4KB
try_print和try_println
非panic的向stdout打印
这个创建提供了一个不panic的替代打印和println宏。
println
和print
宏提供了一个简单的接口,用于在程序的stdout上输出内容。当写入stdout时,宏会panic,失败条件可能发生在外部条件。
以下Rust代码
fn main() {
for _ in 0..10000 {
println!("line") {
}
}
将程序输出管道化到其他工具可能导致程序在管道关闭时panic。
produce_logs | head
line
line
line
line
line
line
line
line
line
line
thread '<main>' panicked at 'failed printing to stdout: Broken pipe (os error 32)', ../src/libstd/io/stdio.rs:588
而不是panic,允许开发者决定如何处理错误结果,无论是忽略还是在其上panic,将是有趣的。这个crate提供了try_println
和try_print
作为替代的非panic宏。
以下代码在管道关闭时将不再panic。
#[macro_use] extern crate try_print;
fn main() {
for _ in 0..10000 {
if let Err(_) = try_println!("line") {
std::process::exit(0);
}
}
}