#compact #output #single-line #pretty-print #system #fmt

compact-debug

Monkey-patches Rust的fmt系统以使格式化更加紧凑

2个版本

0.1.1 2024年7月11日
0.1.0 2023年11月15日

#299 in 调试

Download history 100/week @ 2024-07-08 3/week @ 2024-07-15 16/week @ 2024-07-22

119 每月下载次数

MIT/Apache

8KB
89

Compact-Debug

{:#?}格式化,以及dbg!()宏,听起来不错。但一旦你尝试使用它们...

Goto(
    Address(
        30016,
    ),
),
Label(
    Address(
        29990,
    ),
),
Expr(
    Expr(
        Expr(
            [
                Var(
                    0,
                ),
                Const(
                    0,
                ),
                Op(
                    Ne,
                ),
            ],
        ),
    ),
    Address(
        30016,
    ),
),

你美好的输出清晰可读的梦想被一大块比棉花糖还要松散的输出所打破,每一行大约有两项内容。即使是中等复杂的类型,也会出现满屏的空白输出。沮丧之余,你不得不不情愿地将派生的Debug实现替换为手动实现,放弃使用DebugTuple而改用write_str。然而,这导致了大量的样板代码,并且不会影响你无法控制的类型,如无处不在的Option

这正是这个crate的作用所在。它通过monkey-patches格式化机制,使得DebugTuple无论是否使用#标志,都能在单行上打印。上面的片段将打印为

Goto(Address(30016)),
Label(Address(29990)),
Expr(Expr(Expr([
    Var(0),
    Const(0),
    Op(Ne),
])), Address(30016)),

该crate目前仅支持x86_64架构。

依赖关系

~0.2–7MB
~37K SLoC