Rust:
Skriva ut felsökningsdata

Hur man gör:

För att skriva ut debugginfo i Rust, använd println! med debug-flaggan {:?}:

fn main() {
    let my_data = vec![1, 2, 3];
    println!("Debug-info: {:?}", my_data);
}

Utskrift skulle se ut så här:

Debug-info: [1, 2, 3]

Om du vill ha en mer detaljerad och formaterad utskrift, kan du använda # tillsammans med debug-flaggan:

fn main() {
    let my_data = vec![1, 2, 3];
    println!("Detaljerad debug-info: {:#?}", my_data);
}

Det skulle ge denna detaljerade utskrift:

Detaljerad debug-info: [
    1,
    2,
    3,
]

Kom ihåg att din typ måste implementera Debug trait för att använda {:?} eller {:#?}.

Deep Dive

I Rusts barndom insåg man att att skriva ut debug-information var kritiskt, så Debug trait implementerades tidigt i språkets utveckling. Det finns alternativ till println!, såsom att logga med bibliotek som log eller env_logger för mer kontroll och förmågan att hantera olika loggnivåer.

Display är en annan trait som liknar Debug, men den är avsedd för användarvänlig utskrift snarare än debug-utskrift. Display behöver en mer manuell implementering där du bestämmer formatet, medan Debug oftast kan använda en derivat-deklaration för automatisk implementering.

std::fmt modulen i Rust standardbiblioteket hanterar formattering. Det finns många andra traits i denna modul som kan användas för att anpassa utskrift utöver Debug och Display.

Se även