[Avg. reading time: 3 minutes]

Advanced Printing

Pretty Debug Print

Pretty debug print {:#?} prints debug output in an indented, human-readable format for easier inspection of complex data structures.

// Print

fn main() {
    let doesnt_print = ();
    println!("This will not print: {}", doesnt_print);
}

Pretty Print

// Pretty Print

fn main() {
    let doesnt_print = ();
    println!("This will print: {:#?}", doesnt_print);
}

What is the output of this?

// Print Space

fn main() {
    let doesnt_print = ' ';
    println!("This will not print: {}", doesnt_print);
}
// Pretty Print Space

fn main() {
    let doesnt_print = ' ';
    println!("This will print: {:#?}", doesnt_print);
}

Debug Print vs Pretty Debug Print

fn main() {
    let data = vec![
        ("Rachel", 30),
        ("Monica", 29),
        ("Phoebe", 31),
    ];

    println!("Regular debug:");
    println!("{:?}", data);

    println!("\nPretty debug:");
    println!("{:#?}", data);
}

dbg!

fn main() {
    let x = 10;
    let y = x + 5;

    dbg!(x);
    dbg!(y);
}
  • Prints file name and line number
  • Uses Debug formatting automatically
  • Returns the value, so it doesn’t break code flow
  • dont use dbg in Production.

#print #prettyprintVer 2.0.4

Last change: 2026-01-21