1 stable release

1.0.0 May 23, 2019

#41 in #everything

Unlicense

3KB

Debug-print everything!

If you - like me - frequently find yourself deep in a jungle of generic traits with a sudden need to debug-print some data, this crate is for you. The constant struggle of adding Debug bounds everywhere only to remove all of them (or at least the ones you can still find) as soon as you're done is over:

use debug_everything::Debuggable;

fn generic<T>(t: T) {
    println!("t = {:?}", t.debug());
}

How it works

Sadly, this relies on specialization and thus only works on nightly (as of May 2019). The Debuggable trait is implemented for all types but specialized for types implementing Debug:

use debug_everything::Debuggable;
struct Dummy;

assert_eq!("42", format!("{:?}", 42.debug()));
assert_eq!("<no Debug impl>", format!("{:?}", Dummy.debug()));

Simple!

No runtime deps