output without the trait bounds (using specialization to find the right impl anyway)
output value for type of impl Debug, output type name for unimplDebug.
#[derive(Debug)]
struct A(usize);
struct B(usize);
fn main() {
println!("{:?}", A(1)); // output: A(1)
println!("{:?}", B(1)); // output: `pi_print_any::B`
}