#debugging #dbg #label #expressions #print #printing #macro

printd

调试表达式并打印调试标签。是 dbg!() 宏的增强版本。

2 个版本

0.2.1 2021 年 11 月 16 日
0.2.0 2021 年 11 月 16 日

#9#dbg

MIT/Apache 许可

5KB

printd

此软件包提供对 dbg!() 宏的轻微修改版本。宏 printd!() 打印一个或多个可以带有标签的表达式。

std 中的 dbg!() 宏相比,它不使用“花哨”的调试格式化程序(:#?),因为当调试的变量多于几个时,输出有时会太大。

该宏还支持打印调试消息并对多个表达式进行标记。(见示例。)

还有 eprintd!() 用于打印到 stderr

示例

基本用法。


printd!(1 + 2);
// [printd/README.md:20] 1 + 2 = 3

类似于 dbg!() 的用法,但输出更小。


let foo = vec![1, 2, 3];
dbg!(foo);
// [printd/README.md:31] foo = [
//     1,
//     2,
//     3,
// ]

let foo = vec![1, 2, 3];
printd!(foo);
// [printd/README.md:39] foo = [1, 2, 3]

支持多个表达式。


let foo = vec![1, 2, 3];
let bar = 69;
printd!(foo, bar);
// [printd/README.md:50] foo = [1, 2, 3]
// [printd/README.md:50] bar = 69

支持(美观的)调试消息。宏 dbg!() 不关心消息是否是字符串字面量,并打印丑陋的输出。


dbg!("Hello world!");
// [printd/README.md:62] "Hello world!" = "Hello world!"

printd!("Hello world!");
// [printd/README.md:65] "Hello world!"

您可以标记调试表达式以更好地组织它们。带有标签的表达式只会打印一次源位置。


let foo = vec![1, 2, 3];
let bar = 69;
let idk = String::from("Something else then foo and bar\n");

printd!("Very important variables", foo, bar);
// [printd/README.md:77] Very important variables
//     foo = [1, 2, 3]
//     bar = 69
//     idk = "Something else then foo and bar\n"

无运行时依赖