compact-debug

Crates.iocompact-debug
lib.rscompact-debug
version0.1.1
sourcesrc
created_at2023-11-15 21:38:25.826512
updated_at2024-07-11 18:40:49.781634
descriptionMonkey-patches Rust's fmt system to make pretty-printing more compact
homepage
repositoryhttps://github.com/Kyuuhachi/Compact-Debug
max_upload_size
id1036866
size7,703
(Kyuuhachi)

documentation

README

Compact-Debug

{:#?} formatting, and the dbg!() macro, sound nice on paper. But once you try using them...

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

Your dreams of nice and readable output are shattered by a chunk of output more porous than cotton candy, with approximately two tokens of content on each line. Screenful upon screenful of vacuous output for even a moderately complex type. Upset, you reluctantly replace your derived Debug implementation with a manual one that eschews DebugTuple in favor of write_str. However, this results in a catastrophic amount of boilerplate code, and doesn't affect types outside of your control, like the ubiquitous Option.

That's where this crate comes in. It monkey-patches the pretty-printing machinery so that DebugTuple is printed on a single line regardless of # flag. The above snippet is printed as:

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

This crate currently only supports x86_64 architecture.

Commit count: 4

cargo fmt