1个不稳定版本

使用旧的Rust 2015

0.0.1 2015年10月31日

#17 in #happen


magicalstick中使用

MIT/Apache

4KB

try_print和try_println

非panic的向stdout打印

这个创建提供了一个不panic的替代打印和println宏。

printlnprint宏提供了一个简单的接口,用于在程序的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_printlntry_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);
    }
  }
}

无运行时依赖