1个不稳定版本
0.1.0 | 2019年3月22日 |
---|
#72 in #try
10KB
140 行
debug-try
此crate包含一个属性宏,可以帮助您调试程序中的错误。
在标记了#[debug_try]
属性的功能中,任何使用?
运算符传播的错误都将被记录,并打印到标准输出文件、行和列。
如果属性中设置了nested = true
,则相同的规则也适用于标记函数内定义的功能和闭包。
注意。 此crate需要proc_macro_diagnostic
和proc_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