#error #try #macro #attributes #print #propagated

nightly macro debug-try

宏,用于在错误传播时打印消息

1个不稳定版本

0.1.0 2019年3月22日

#72 in #try

MIT许可证

10KB
140

debug-try

此crate包含一个属性宏,可以帮助您调试程序中的错误。

在标记了#[debug_try]属性的功能中,任何使用?运算符传播的错误都将被记录,并打印到标准输出文件、行和列。

如果属性中设置了nested = true,则相同的规则也适用于标记函数内定义的功能和闭包。

注意。 此crate需要proc_macro_diagnosticproc_macro_span功能,因此只支持Rust nightly版本。

示例

// my_func.rs
use std::{error, fs, io, path};
use debug_try::debug_try;

#[debug_try(nested = true)]
fn my_func() -> Result<(), Box<dyn error::Error>> {
    fn file_size<P: AsRef<path::Path>>(file: P) -> Result<usize, io::Error> {
        let data = fs::read(file)?;
        Ok(data.len())
    }

    println!("file size = {}", file_size("non_existing_file.txt")?);
    Ok(())
}

当调用时,以下内容将被打印到标准输出

Error propagated (my_func.rs:8:33): No such file or directory (os error 2)
Error propagated (my_func.rs:12:65): No such file or directory (os error 2)

依赖项

~2MB
~46K SLoC